5.8
This commit is contained in:
commit
3a7aeb5b0a
5
App.vue
5
App.vue
@ -29,4 +29,9 @@
|
||||
height: 20rpx;
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
page{
|
||||
font-size: 28rpx;
|
||||
padding-bottom: 120rpx;
|
||||
}
|
||||
</style>
|
||||
5
api/area.js
Normal file
5
api/area.js
Normal file
@ -0,0 +1,5 @@
|
||||
export const apiArr = {
|
||||
city: '/citys/s/list', // 获取省份列表
|
||||
area: '/citys/c/list', // 获取城市列表
|
||||
business: '/citys/x/list', // 获取区县列表
|
||||
}
|
||||
11
api/communityService.js
Normal file
11
api/communityService.js
Normal file
@ -0,0 +1,11 @@
|
||||
export const apiArr = {
|
||||
getCateList: '/wechat/appoints/get-cate-list', // 获取同城服务分类列表
|
||||
serverInfo: '/wechat/appoints/get-one', // 获取同城服务详情
|
||||
getAllList: '/wechat/appoints/get-all-list', // 跟据不同的id 查分类
|
||||
getHotCate: '/wechat/appoints/get-hot-cate', //获取热门上门服务
|
||||
submitServer: '/wechat/appoint-orders/now', // 预约服务
|
||||
createServerOrder: '/wechat/appoint-orders/create', // 创建上门服务订单
|
||||
getCurrentShopMsg: '/wechat/water/device/shop-info', // 获取商家支付信息
|
||||
getShopList: '/wechat/get-shop-list', // 获取商家列表
|
||||
getGoodsDesc: "/wechat/shop/shop_info", //商家详情
|
||||
}
|
||||
20
api/user.js
Normal file
20
api/user.js
Normal file
@ -0,0 +1,20 @@
|
||||
export const apiArr = {
|
||||
getAllList:' /wechat/appoints/get-all-list', // 上门服务商品列表
|
||||
revoke: '/wechat/appoint-orders/revoke', // 取消订单
|
||||
getOne: '/wechat/appoint-orders/get-one', // 订单详情
|
||||
create: '/wechat/appoint-orders/create', // 订单提交
|
||||
getOrdersAllList: '/wechat/appoint-orders/get-all-list', // 查询这个登录人的所有订单
|
||||
signCycle: '/wechat/sign/sign-cycle', // 签到周期详情
|
||||
signList: '/wechat/sign/sign-list', // 获取签到记录列表
|
||||
sign: '/wechat/sign/sign', // 积分签到
|
||||
signIntegral: '/wechat/sign/integral', // 查询账户积分
|
||||
signInfo: '/wechat/sign/info', // 获取签到详情
|
||||
addr: '/wechat/mpusers/addr', // 获取地址信息
|
||||
setAddr: '/wechat/mpusers/set-addr',// 修改地址接口
|
||||
avatar: '/wechat/mpusers/avatar', // 上传头像
|
||||
modifyPass: '/wechat/mpusers/modify-pass', // 修改登录密码
|
||||
payPass: '/wechat/mpusers/pay-pass', // 设置支付密码
|
||||
couponList: '/wechat/discuss/list', // 获取优惠券列表
|
||||
getUserCommunity:"/wechat/community/owner/mylist",//获取用户社区信息
|
||||
createQrcode: '/wechat/water/device/qr-code', //获取小程序码
|
||||
};
|
||||
11
components/areaPopup/areaPopup.css
Normal file
11
components/areaPopup/areaPopup.css
Normal file
@ -0,0 +1,11 @@
|
||||
.popup_title {
|
||||
display: flex;
|
||||
margin: 20rpx 30rpx 0;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.popup_label {
|
||||
color: #999;
|
||||
}
|
||||
.color_blue {
|
||||
color: #576b95;
|
||||
}
|
||||
158
components/areaPopup/areaPopup.vue
Normal file
158
components/areaPopup/areaPopup.vue
Normal file
@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<view>
|
||||
<u-popup
|
||||
:show="show"
|
||||
closeOnClickOverlay
|
||||
round="20rpx"
|
||||
@close="onClose"
|
||||
>
|
||||
<view>
|
||||
<view class="popup_title">
|
||||
<view class="popup_label" @click="onClose">取消</view>
|
||||
<view class="popup_label color_blue" @click="onOk">确认</view>
|
||||
</view>
|
||||
<!-- indicator-style="height: 50px;" style="width: 100%; height: 500rpx;" -->
|
||||
<picker-view indicator-style="height: 50px;" style="width: 100%; height: 400rpx;" :value="value" @change="bindChange">
|
||||
<picker-view-column>
|
||||
<view v-for="(item, index) in provList" :key="index" style="line-height: 50px; text-align: center;">{{item.name}}</view>
|
||||
</picker-view-column>
|
||||
<picker-view-column>
|
||||
<view v-for="(item, index) in defaultCity" :key="index" style="line-height: 50px; text-align: center;">{{item.name}}</view>
|
||||
</picker-view-column>
|
||||
<picker-view-column>
|
||||
<view v-for="(item, index) in defaultDist" :key="index" style="line-height: 50px; text-align: center;">{{item.business_name}}</view>
|
||||
</picker-view-column>
|
||||
</picker-view>
|
||||
|
||||
|
||||
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
apiArr
|
||||
} from '../../api/area';
|
||||
import { request } from '../../utils';
|
||||
export default {
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: true,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
provList: [], // 省
|
||||
cityList: [], //市
|
||||
distList: [], // 区
|
||||
|
||||
defaultCity: [], // 默认展示的市区数据
|
||||
defaultDist: [], // 默认展示的县/区数据
|
||||
|
||||
confirmProv: {}, // 默认选中省
|
||||
confirmCity: {}, // 默认选中市
|
||||
confirmDist: {}, // 默认选中区/县
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 获取省份信息
|
||||
async getProvList () {
|
||||
const res = await request(apiArr.city, 'POST', {}, { silent: false });
|
||||
return res;
|
||||
},
|
||||
|
||||
// 获取市区信息
|
||||
async getCityList () {
|
||||
const res = await request(apiArr.area, 'POST', {}, { silent: false });
|
||||
return res;
|
||||
},
|
||||
|
||||
// 获取 县/区 信息
|
||||
async getDistList () {
|
||||
const res = await request(apiArr.business, 'POST', {}, { silent: false });
|
||||
return res;
|
||||
},
|
||||
|
||||
async init() {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
mask: true
|
||||
});
|
||||
try {
|
||||
const [provRes, cityRes, distRes] = await Promise.all([
|
||||
this.getProvList(),
|
||||
this.getCityList(),
|
||||
this.getDistList(),
|
||||
])
|
||||
|
||||
uni.hideLoading();
|
||||
// 默认展示第一条数据 的市区 和 城区
|
||||
let defaultCity = cityRes.rows.filter((item) => {
|
||||
return item.city_id === provRes.rows[0].city_id
|
||||
});
|
||||
let defaultDist = distRes.rows.filter((item) => {
|
||||
return item.area_id === cityRes.rows[0].area_id
|
||||
});
|
||||
|
||||
this.provList = provRes?.rows; // 全部省信息
|
||||
this.cityList = cityRes?.rows; // 全部市信息
|
||||
this.distList = distRes?.rows; // 全部区信息
|
||||
|
||||
this.defaultCity = defaultCity; // 默认展示 市区
|
||||
this.defaultDist = defaultDist; // 默认展示 县/区
|
||||
|
||||
this.confirmProv = provRes.rows[0];
|
||||
this.confirmCity = defaultCity[0];
|
||||
this.confirmDist = defaultDist[0];
|
||||
} catch (error) {
|
||||
uni.hideLoading();
|
||||
console.log('获取省市区信息异常', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 切换省市区时联动改变参数值
|
||||
bindChange (e) {
|
||||
console.log('[1231331], e', e);
|
||||
const {value } = e.detail;
|
||||
const {provList, cityList, distList} = this;
|
||||
|
||||
// 每次切换时,根据当前点击的省过滤出所属市区,并且变化县/区
|
||||
let newCrty = cityList.filter((item) => item.city_id === provList[value[0]].city_id);
|
||||
let newDist = distList.filter((item) => item.area_id === newCrty[value[1]].area_id);
|
||||
|
||||
this.defaultCity = newCrty;
|
||||
this.defaultDist = newDist;
|
||||
|
||||
// 更改默认选中数据
|
||||
this.confirmProv = provList[value[0]];
|
||||
this.confirmCity = newCrty[value[1]];
|
||||
this.confirmDist = newDist[value[2]];
|
||||
},
|
||||
|
||||
// 关闭弹窗
|
||||
onClose() {
|
||||
this.$emit('close');
|
||||
},
|
||||
|
||||
// 点击确定传递当前选中省市区信息给父方法
|
||||
onOk() {
|
||||
const { confirmProv, confirmCity, confirmDist } = this;
|
||||
this.$emit('selectArea', {confirmProv, confirmCity, confirmDist});
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url('./areaPopup.css');
|
||||
</style>
|
||||
89
components/nav/nav.css
Normal file
89
components/nav/nav.css
Normal file
@ -0,0 +1,89 @@
|
||||
|
||||
.foot-fixed {
|
||||
position: fixed;
|
||||
bottom: -1px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 999;
|
||||
width: 100%;
|
||||
background: #ffffff;
|
||||
border-top: 1px solid #E8E8E8;
|
||||
box-shadow: 0 0 3px rgba(0,0,0,0.1);
|
||||
}
|
||||
.foot-fixed .foot-item {
|
||||
padding: 0;
|
||||
}
|
||||
.foot-fixed .foot-item {
|
||||
position: relative;
|
||||
}
|
||||
.foot-fixed .foot-item {
|
||||
width: 20%;
|
||||
float: left;
|
||||
text-align: center;
|
||||
color: #777;
|
||||
padding: 5px 0 10px;
|
||||
}
|
||||
a {
|
||||
color: #666;
|
||||
text-decoration: none;
|
||||
}
|
||||
a {
|
||||
background: transparent;
|
||||
}
|
||||
.foot-fixed .foot-item .foot-icon {
|
||||
width: 24px;
|
||||
height: 26px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.foot-fixed .foot-item .foot-label {
|
||||
margin: 5px 0;
|
||||
}
|
||||
.foot-fixed .foot-item .foot-label {
|
||||
height: 15px;
|
||||
line-height: 15px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.foot-fixed .foot-item span {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 自定义导航栏 */
|
||||
.nav-box {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
/* position: relative; */
|
||||
/* position: fixed; */
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.nav-box .nav-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nav-box .nav-bar .nav-bar-left,
|
||||
.nav-box .nav-bar .nav-bar-right {
|
||||
padding: 0 20rpx;
|
||||
min-width: 36rpx;
|
||||
}
|
||||
|
||||
.nav-box .nav-bar .nav-bar-left van-icon {
|
||||
vertical-align: sub;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.nav-box .nav-bar .nav-bar-title {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-size: 32rpx;
|
||||
letter-spacing: 2rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.nav-box .nav-bar-title {
|
||||
color: red;
|
||||
}
|
||||
@ -1,20 +1,97 @@
|
||||
<template>
|
||||
<view>123
|
||||
|
||||
<view class="foot-fixed">
|
||||
<view v-for="(item, index) in navList" :key='index'>
|
||||
<view id="navIndex" :style="{width:foot_width}" @click="jump" :data-idx="index" :data-url="item.url"
|
||||
class="foot-item">
|
||||
<image class="foot-icon" :src="item.photo" mode=""></image>
|
||||
<text class="foot-label" id="navIndexLabel">{{item.nav_name}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:"tes",
|
||||
name: "nav",
|
||||
data() {
|
||||
return {
|
||||
|
||||
navList: [],
|
||||
foot_width: '20%',
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
getFootnav() {
|
||||
let _that = this;
|
||||
uni.request({
|
||||
url: 'https://zhsq.hshuishang.com/Miniapi/Index/footer_nav_list',
|
||||
method: 'post',
|
||||
header: {
|
||||
'Content-type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
data: {},
|
||||
dataType: 'json',
|
||||
success: (result) => {
|
||||
result.data[0].url = "/pages/index/index"
|
||||
result.data[1].url = "/pages/device/device"
|
||||
result.data[2].nav_name = "手机通行"
|
||||
result.data[2].url = "/pages/phoneGo/phoneGo"
|
||||
|
||||
result.data[3].url = `packages/community/index/index`
|
||||
result.data[4].url = "/pages/user/index"
|
||||
|
||||
result.data.splice(1, 2);
|
||||
let footWidth = (100 / result.data.length).toFixed(2) + '%';
|
||||
this.navList = result.data;
|
||||
this.foot_width = footWidth;
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
//暂未开通
|
||||
NotOpen() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '此功能暂未开通!',
|
||||
showCancel: false,
|
||||
complete: (res) => {
|
||||
if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
jump(e) {
|
||||
const ctoken = uni.getStorageSync('ctoken');
|
||||
const authen = ['/pages/index/index', '/pages/user/index'];
|
||||
// 除首页及个人中心页不需要鉴定ctoken, 其他tab页均需存在登录态才可访问
|
||||
if (authen.includes(e.currentTarget.dataset.url)) {
|
||||
uni.redirectTo({
|
||||
url: e.currentTarget.dataset.url,
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!ctoken) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login',
|
||||
})
|
||||
return;
|
||||
}
|
||||
uni.redirectTo({
|
||||
url: e.currentTarget.dataset.url,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.getFootnav();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@import url("./nav.css");
|
||||
</style>
|
||||
@ -16,8 +16,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { onLoad } from 'uview-ui/libs/mixin/mixin';
|
||||
import { apiArr } from '../../api/community';
|
||||
|
||||
import { apiArr } from '../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
@ -102,7 +102,7 @@
|
||||
this.chooseClick(e);
|
||||
return;
|
||||
}
|
||||
NavgateTo(`/community/communityDetail/index?title=${item.name}&id=${item.community_id}`, { isLogin: false })
|
||||
NavgateTo(`/packages/community/communityDetail/index?title=${item.name}&id=${item.community_id}`, { isLogin: false })
|
||||
},
|
||||
|
||||
//选择小区
|
||||
|
||||
272
js_sdk/wa-permission/permission.js
Normal file
272
js_sdk/wa-permission/permission.js
Normal file
@ -0,0 +1,272 @@
|
||||
/**
|
||||
* 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
|
||||
*/
|
||||
|
||||
var isIos
|
||||
// #ifdef APP-PLUS
|
||||
isIos = (plus.os.name == "iOS")
|
||||
// #endif
|
||||
|
||||
// 判断推送权限是否开启
|
||||
function judgeIosPermissionPush() {
|
||||
var result = false;
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var app = UIApplication.sharedApplication();
|
||||
var enabledTypes = 0;
|
||||
if (app.currentUserNotificationSettings) {
|
||||
var settings = app.currentUserNotificationSettings();
|
||||
enabledTypes = settings.plusGetAttribute("types");
|
||||
console.log("enabledTypes1:" + enabledTypes);
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
plus.ios.deleteObject(settings);
|
||||
} else {
|
||||
enabledTypes = app.enabledRemoteNotificationTypes();
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启!");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
console.log("enabledTypes2:" + enabledTypes);
|
||||
}
|
||||
plus.ios.deleteObject(app);
|
||||
plus.ios.deleteObject(UIApplication);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断定位权限是否开启
|
||||
function judgeIosPermissionLocation() {
|
||||
var result = false;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
result = (status != 2)
|
||||
console.log("定位权限开启:" + result);
|
||||
// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
|
||||
/* var enable = cllocationManger.locationServicesEnabled();
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
console.log("enable:" + enable);
|
||||
console.log("status:" + status);
|
||||
if (enable && status != 2) {
|
||||
result = true;
|
||||
console.log("手机定位服务已开启且已授予定位权限");
|
||||
} else {
|
||||
console.log("手机系统的定位没有打开或未给予定位权限");
|
||||
} */
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断麦克风权限是否开启
|
||||
function judgeIosPermissionRecord() {
|
||||
var result = false;
|
||||
var avaudiosession = plus.ios.import("AVAudioSession");
|
||||
var avaudio = avaudiosession.sharedInstance();
|
||||
var permissionStatus = avaudio.recordPermission();
|
||||
console.log("permissionStatus:" + permissionStatus);
|
||||
if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
|
||||
console.log("麦克风权限没有开启");
|
||||
} else {
|
||||
result = true;
|
||||
console.log("麦克风权限已经开启");
|
||||
}
|
||||
plus.ios.deleteObject(avaudiosession);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断相机权限是否开启
|
||||
function judgeIosPermissionCamera() {
|
||||
var result = false;
|
||||
var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
|
||||
var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = true;
|
||||
console.log("相机权限已经开启");
|
||||
} else {
|
||||
console.log("相机权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(AVCaptureDevice);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断相册权限是否开启
|
||||
function judgeIosPermissionPhotoLibrary() {
|
||||
var result = false;
|
||||
var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
|
||||
var authStatus = PHPhotoLibrary.authorizationStatus();
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = true;
|
||||
console.log("相册权限已经开启");
|
||||
} else {
|
||||
console.log("相册权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(PHPhotoLibrary);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断通讯录权限是否开启
|
||||
function judgeIosPermissionContact() {
|
||||
var result = false;
|
||||
var CNContactStore = plus.ios.import("CNContactStore");
|
||||
var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
|
||||
if (cnAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("通讯录权限已经开启");
|
||||
} else {
|
||||
console.log("通讯录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(CNContactStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断日历权限是否开启
|
||||
function judgeIosPermissionCalendar() {
|
||||
var result = false;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("日历权限已经开启");
|
||||
} else {
|
||||
console.log("日历权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断备忘录权限是否开启
|
||||
function judgeIosPermissionMemo() {
|
||||
var result = false;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = true;
|
||||
console.log("备忘录权限已经开启");
|
||||
} else {
|
||||
console.log("备忘录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Android权限查询
|
||||
function requestAndroidPermission(permissionID) {
|
||||
return new Promise((resolve, reject) => {
|
||||
plus.android.requestPermissions(
|
||||
[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
|
||||
function(resultObj) {
|
||||
var result = 0;
|
||||
for (var i = 0; i < resultObj.granted.length; i++) {
|
||||
var grantedPermission = resultObj.granted[i];
|
||||
console.log('已获取的权限:' + grantedPermission);
|
||||
result = 1
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedPresent.length; i++) {
|
||||
var deniedPresentPermission = resultObj.deniedPresent[i];
|
||||
console.log('拒绝本次申请的权限:' + deniedPresentPermission);
|
||||
result = 0
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedAlways.length; i++) {
|
||||
var deniedAlwaysPermission = resultObj.deniedAlways[i];
|
||||
console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
|
||||
result = -1
|
||||
}
|
||||
resolve(result);
|
||||
// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
|
||||
// if (result != 1) {
|
||||
// gotoAppPermissionSetting()
|
||||
// }
|
||||
},
|
||||
function(error) {
|
||||
console.log('申请权限错误:' + error.code + " = " + error.message);
|
||||
resolve({
|
||||
code: error.code,
|
||||
message: error.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 使用一个方法,根据参数判断权限
|
||||
function judgeIosPermission(permissionID) {
|
||||
if (permissionID == "location") {
|
||||
return judgeIosPermissionLocation()
|
||||
} else if (permissionID == "camera") {
|
||||
return judgeIosPermissionCamera()
|
||||
} else if (permissionID == "photoLibrary") {
|
||||
return judgeIosPermissionPhotoLibrary()
|
||||
} else if (permissionID == "record") {
|
||||
return judgeIosPermissionRecord()
|
||||
} else if (permissionID == "push") {
|
||||
return judgeIosPermissionPush()
|
||||
} else if (permissionID == "contact") {
|
||||
return judgeIosPermissionContact()
|
||||
} else if (permissionID == "calendar") {
|
||||
return judgeIosPermissionCalendar()
|
||||
} else if (permissionID == "memo") {
|
||||
return judgeIosPermissionMemo()
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 跳转到**应用**的权限页面
|
||||
function gotoAppPermissionSetting() {
|
||||
if (isIos) {
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var application2 = UIApplication.sharedApplication();
|
||||
var NSURL2 = plus.ios.import("NSURL");
|
||||
// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
|
||||
var setting2 = NSURL2.URLWithString("app-settings:");
|
||||
application2.openURL(setting2);
|
||||
|
||||
plus.ios.deleteObject(setting2);
|
||||
plus.ios.deleteObject(NSURL2);
|
||||
plus.ios.deleteObject(application2);
|
||||
} else {
|
||||
// console.log(plus.device.vendor);
|
||||
var Intent = plus.android.importClass("android.content.Intent");
|
||||
var Settings = plus.android.importClass("android.provider.Settings");
|
||||
var Uri = plus.android.importClass("android.net.Uri");
|
||||
var mainActivity = plus.android.runtimeMainActivity();
|
||||
var intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
mainActivity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查系统的设备服务是否开启
|
||||
// var checkSystemEnableLocation = async function () {
|
||||
function checkSystemEnableLocation() {
|
||||
if (isIos) {
|
||||
var result = false;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var result = cllocationManger.locationServicesEnabled();
|
||||
console.log("系统定位开启:" + result);
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return result;
|
||||
} else {
|
||||
var context = plus.android.importClass("android.content.Context");
|
||||
var locationManager = plus.android.importClass("android.location.LocationManager");
|
||||
var main = plus.android.runtimeMainActivity();
|
||||
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
|
||||
var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
|
||||
console.log("系统定位开启:" + result);
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
judgeIosPermission: judgeIosPermission,
|
||||
requestAndroidPermission: requestAndroidPermission,
|
||||
checkSystemEnableLocation: checkSystemEnableLocation,
|
||||
gotoAppPermissionSetting: gotoAppPermissionSetting
|
||||
}
|
||||
@ -57,7 +57,7 @@
|
||||
},
|
||||
"oauth" : {
|
||||
"weixin" : {
|
||||
"appid" : "wx48c8154de6cc8b36",
|
||||
"appid" : "wxb4018c78fa143450",
|
||||
"UniversalLinks" : ""
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,8 +27,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -62,8 +62,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, picUrl, NavgateTo } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -82,7 +82,6 @@
|
||||
typeName:"",//业主 家属 租户 访客
|
||||
room_id:"",
|
||||
|
||||
show:false,
|
||||
columns:[
|
||||
[
|
||||
{text:"业主",type:1},
|
||||
@ -101,10 +100,10 @@
|
||||
const { type } = e.currentTarget.dataset;
|
||||
|
||||
if(type == '1'){
|
||||
NavgateTo(`/community/chooseMsg/index?type=${type}&id=${this.communityId}`, {isLogin: false});
|
||||
NavgateTo(`/packages/community/chooseMsg/index?type=${type}&id=${this.communityId}`, {isLogin: false});
|
||||
}else{
|
||||
if(this.FacId){
|
||||
NavgateTo(`/community/chooseMsg/index?type=${type}&id=${this.communityId}&FacId=${this.FacId}`, {isLogin: false});
|
||||
NavgateTo(`/packages/community/chooseMsg/index?type=${type}&id=${this.communityId}&FacId=${this.FacId}`, {isLogin: false});
|
||||
|
||||
}else{
|
||||
uni.showToast({
|
||||
@ -23,8 +23,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -57,8 +57,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, picUrl, NavgateTo } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
|
||||
export default {
|
||||
data () {
|
||||
@ -68,7 +68,7 @@
|
||||
navList: [
|
||||
{
|
||||
pic: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/_assets/Group_345.png',
|
||||
url: '/community/applyOwer/index',
|
||||
url: '/packages/community/applyOwer/index',
|
||||
desc: '申请业主'
|
||||
},
|
||||
{
|
||||
@ -165,8 +165,8 @@
|
||||
}
|
||||
console.log('newInfo', newInfo);
|
||||
let navList = this.navList
|
||||
navList[0].url = `/community/applyOwer/index?id=${Number(id)}&title=${res.name}`;
|
||||
navList[1].url = `/community/mycar/index?id=${Number(id)}&title=${res.name}`;
|
||||
navList[0].url = `/packages/community/applyOwer/index?id=${Number(id)}&title=${res.name}`;
|
||||
navList[1].url = `/packages/community/mycar/index?id=${Number(id)}&title=${res.name}`;
|
||||
this.info = newInfo;
|
||||
this.navList = navList;
|
||||
|
||||
@ -195,7 +195,7 @@
|
||||
|
||||
// 通知栏点击跳转
|
||||
headerTipsClick() {
|
||||
NavgateTo(`/community/notice/index?id=${this.id}&title=${this.pageTitle}`, { isLogin: false })
|
||||
NavgateTo(`/packages/community/notice/index?id=${this.id}&title=${this.pageTitle}`, { isLogin: false })
|
||||
},
|
||||
|
||||
// 宫格item点击
|
||||
@ -209,11 +209,11 @@
|
||||
},
|
||||
|
||||
repair(){
|
||||
NavgateTo(`/community/oneRepair/index`, {isLogin: false })
|
||||
NavgateTo(`/packages/community/oneRepair/index`, {isLogin: false })
|
||||
},
|
||||
|
||||
ReparirList(){
|
||||
NavgateTo(`/community/repairList/index?id=${this.id}&title=${this.info.name}`, {isLogin: false })
|
||||
NavgateTo(`/packages/community/repairList/index?id=${this.id}&title=${this.info.name}`, {isLogin: false })
|
||||
},
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -24,8 +24,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, uniqueByField } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, picUrl, uniqueByField } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -63,9 +63,6 @@
|
||||
if(options?.types == 2){
|
||||
this.init(options?.type || '');
|
||||
}else{
|
||||
// this.init(options?.type || '');
|
||||
// return
|
||||
// // 临时调init , 后续接口好了改回去
|
||||
this.getUserCommunity()
|
||||
}
|
||||
},
|
||||
@ -31,8 +31,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, NavgateTo } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -108,7 +108,7 @@
|
||||
},
|
||||
|
||||
addCar(){
|
||||
NavgateTo(`/community/addCar/index?title=${this.title}&id=${this.id}`, {isLogin: false})
|
||||
NavgateTo(`/packages/community/addCar/index?title=${this.title}&id=${this.id}`, {isLogin: false})
|
||||
},
|
||||
|
||||
|
||||
@ -25,8 +25,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, NavgateTo } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -65,7 +65,7 @@
|
||||
headerNoticeClick(event) {
|
||||
console.log('12313', event);
|
||||
const { item } = event.currentTarget.dataset;
|
||||
NavgateTo(`/community/desc/desc?id=${item.news_id}&title=${item.title}`, {isLogin: false})
|
||||
NavgateTo(`/packages/community/desc/desc?id=${item.news_id}&title=${item.title}`, {isLogin: false})
|
||||
},
|
||||
|
||||
},
|
||||
@ -122,10 +122,10 @@
|
||||
NavgateTo,
|
||||
upload,
|
||||
isPhone,
|
||||
} from '../../utils';
|
||||
} from '../../../utils';
|
||||
import {
|
||||
apiArr
|
||||
} from '../../api/community';
|
||||
} from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -176,18 +176,18 @@
|
||||
},
|
||||
methods: {
|
||||
chooseCom(){
|
||||
NavgateTo(`/community/index/index?joinType=3`, { isLogin: false })
|
||||
NavgateTo(`/packages/community/index/index?joinType=3`, { isLogin: false })
|
||||
},
|
||||
|
||||
chooseFac(e){
|
||||
console.log('eeee', e);
|
||||
const { type } = e.currentTarget.dataset;
|
||||
if(type == '1'){
|
||||
NavgateTo(`/community/chooseMsg/index?type=${type}&id=${this.CommunityInfo.id}`, { isLogin: false });
|
||||
NavgateTo(`/packages/community/chooseMsg/index?type=${type}&id=${this.CommunityInfo.id}`, { isLogin: false });
|
||||
}else{
|
||||
console.log(this.FacId);
|
||||
if(this.FacId){
|
||||
NavgateTo(`/community/chooseMsg/index?type=${type}&id=${this.CommunityInfo.id}&FacId=${this.FacId}`, { isLogin: false });
|
||||
NavgateTo(`/packages/community/chooseMsg/index?type=${type}&id=${this.CommunityInfo.id}&FacId=${this.FacId}`, { isLogin: false });
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: '请先选择楼宇号',
|
||||
74
packages/community/ownerList/index.css
Normal file
74
packages/community/ownerList/index.css
Normal file
@ -0,0 +1,74 @@
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: #F9F9F9;
|
||||
padding: 30rpx 0;
|
||||
}
|
||||
|
||||
.sear_icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
}
|
||||
|
||||
.searchIpt {
|
||||
width: 710rpx;
|
||||
height: 54rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 24rpx;
|
||||
}
|
||||
|
||||
.searchIpt input {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.OwnerItem {
|
||||
padding: 30rpx 20rpx;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
}
|
||||
|
||||
.Name {
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #000000;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.rows {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #999999;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.rows_tit {
|
||||
min-width: 4em;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.rows_con {
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.time {
|
||||
color: #999999;
|
||||
|
||||
}
|
||||
|
||||
.state1 {
|
||||
color: #D5AC66;
|
||||
}
|
||||
|
||||
.state2 {
|
||||
color: #07c160;
|
||||
}
|
||||
|
||||
.state3 {
|
||||
color: red;
|
||||
}
|
||||
118
packages/community/ownerList/index.vue
Normal file
118
packages/community/ownerList/index.vue
Normal file
@ -0,0 +1,118 @@
|
||||
<template>
|
||||
<view class="box">
|
||||
<view class="search">
|
||||
<view class="searchIpt">
|
||||
<input type="text" placeholder="社区名称/业主姓名/业主手机" placeholder-style="color: #999999;font-size: 24rpx;"
|
||||
:value="search" @input="search" />
|
||||
<image class="sear_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/dervice/deriveSearch.png"
|
||||
mode="" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="OwnerItem" v-for="(item, index ) in list" :key="index">
|
||||
<view class="Name">{{item.name}}</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">申请手机</view>
|
||||
<view class="rows_con">{{item.mobile}}</view>
|
||||
</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">入住小区</view>
|
||||
<view class="rows_con">{{item.community.name}}</view>
|
||||
</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">申请类型</view>
|
||||
<view class="rows_con" v-if="item.type == 1">业主</view>
|
||||
<view class="rows_con" v-if="item.type == 2">家属</view>
|
||||
<view class="rows_con" v-if="item.type == 3">租客</view>
|
||||
<view class="rows_con" v-if="item.type == 4">访客</view>
|
||||
</view>
|
||||
|
||||
<view class="rows">
|
||||
<view class="rows_tit">楼宇号</view>
|
||||
<view class="rows_con">{{item.facility.name}}</view>
|
||||
</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">房屋号</view>
|
||||
<view class="rows_con">{{item.room.name}}</view>
|
||||
</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">创建时间</view>
|
||||
<view class="rows_con time">2025-03-24 15:20</view>
|
||||
</view>
|
||||
<view class="rows">
|
||||
<view class="rows_tit">申请状态</view>
|
||||
<view class="rows_con state1" v-if="item.audit === 1">待审核</view>
|
||||
<view class="rows_con state2" v-if="item.audit === 2">已通过</view>
|
||||
<view class="rows_con state3" v-if="item.audit === 3">未通过</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
search: "",
|
||||
page_num: 1,
|
||||
page_size: 10,
|
||||
list: [],
|
||||
flag: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
search(e) {
|
||||
console.log('1231313', e);
|
||||
this.search = e.detail.value;
|
||||
this.list = [];
|
||||
this.page_num = 1;
|
||||
this.flag = false;
|
||||
this.init();
|
||||
|
||||
},
|
||||
|
||||
async init() {
|
||||
const { page_num, page_size, list, search } = this;
|
||||
let param = {
|
||||
page_num,
|
||||
page_size,
|
||||
};
|
||||
if (search !== '') {
|
||||
param = {
|
||||
page_num,
|
||||
page_size,
|
||||
name: search,
|
||||
};
|
||||
}
|
||||
const res = await request(apiArr.ownerList, 'POST', param);
|
||||
let flag = false
|
||||
if (res.rows.length == page_size) {
|
||||
flag = true
|
||||
} else {
|
||||
flag = false
|
||||
}
|
||||
this.list = list.concat(res.rows || []);
|
||||
this.page_num = page_num + 1;
|
||||
this.flag = flag;
|
||||
},
|
||||
},
|
||||
onLoad() {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '我的申请',
|
||||
});
|
||||
this.init();
|
||||
},
|
||||
|
||||
onReachBottom() {
|
||||
if(this.flag){
|
||||
this.init()
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
@ -34,10 +34,10 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { request, picUrl } from '../../../utils';
|
||||
import {
|
||||
apiArr
|
||||
} from '../../api/community';
|
||||
} from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -45,8 +45,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, picUrl, NavgateTo } from '../../utils';
|
||||
import { apiArr } from '../../api/community';
|
||||
import { request, NavgateTo } from '../../../utils';
|
||||
import { apiArr } from '../../../api/community';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -82,11 +82,11 @@
|
||||
},
|
||||
|
||||
headerRepairClick(e){
|
||||
NavgateTo(`/community/oneRepair/index`, { isLogin: false })
|
||||
NavgateTo(`/packages/community/oneRepair/index`, { isLogin: false })
|
||||
},
|
||||
headerRepairDetailClick(e){
|
||||
const { id } = e.currentTarget.dataset
|
||||
NavgateTo(`/community/repairDetail/index?id=${id}&title=${this.title}`, { isLogin: false })
|
||||
NavgateTo(`/packages/community/repairDetail/index?id=${id}&title=${this.title}`, { isLogin: false })
|
||||
},
|
||||
|
||||
changeTab(e){
|
||||
336
packages/communityService/index/index.css
Normal file
336
packages/communityService/index/index.css
Normal file
@ -0,0 +1,336 @@
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.swiper {
|
||||
width: 710rpx;
|
||||
height: 300rpx;
|
||||
margin: 0 auto;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.swiper .swiper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.swiper image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.tabList {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.tabItem {
|
||||
display: flex;
|
||||
width: 20%;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-bottom: 46rpx;
|
||||
}
|
||||
|
||||
.tabImg {
|
||||
height: 54rpx;
|
||||
}
|
||||
|
||||
.tabName {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.tit {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
color: #222222;
|
||||
margin-left: 20rpx;
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
|
||||
.serviceTag {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
padding: 0 20rpx;
|
||||
box-sizing: border-box;
|
||||
margin-top: 30rpx;
|
||||
padding-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.serviceTagItem {
|
||||
width: 345rpx;
|
||||
height: 150rpx;
|
||||
background: linear-gradient(148deg, #FFF4EA 0%, #FFE1C5 100%);
|
||||
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
padding-left: 28rpx;
|
||||
padding-top: 37rpx;
|
||||
position: relative;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.item2 {
|
||||
background: linear-gradient(167deg, #FFF3F3 0%, #FFD5D5 100%);
|
||||
}
|
||||
|
||||
.item3 {
|
||||
background: linear-gradient(145deg, #FFFDF5 0%, #FFF7D0 100%);
|
||||
}
|
||||
|
||||
.item4 {
|
||||
background: linear-gradient(143deg, #F8F8F8 0%, #EAEAEA 100%);
|
||||
}
|
||||
|
||||
.serviceTagItem_name {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
|
||||
.serviceTagItem_img1 {
|
||||
width: 158rpx;
|
||||
height: 131rpx;
|
||||
position: absolute;
|
||||
bottom: 0rpx;
|
||||
right: 4rpx;
|
||||
}
|
||||
|
||||
.serviceTagItem_img2 {
|
||||
width: 154rpx;
|
||||
height: 130.6rpx;
|
||||
position: absolute;
|
||||
bottom: 0rpx;
|
||||
right: 0rpx;
|
||||
}
|
||||
|
||||
.serviceTagItem_img3 {
|
||||
height: 140rpx;
|
||||
width: 178rpx;
|
||||
position: absolute;
|
||||
bottom: 0rpx;
|
||||
right: 0rpx;
|
||||
}
|
||||
|
||||
.serviceTagItem_img4 {
|
||||
width: 204rpx;
|
||||
height: 68rpx;
|
||||
position: absolute;
|
||||
bottom: 10rpx;
|
||||
right: 0rpx;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 20rpx;
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
|
||||
.tabs .tab {
|
||||
font-weight: 400;
|
||||
font-size: 28rpx;
|
||||
color: #555555;
|
||||
margin-right: 70rpx;
|
||||
}
|
||||
|
||||
.tabs .active {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tabs .active::after {
|
||||
content: '';
|
||||
width: 127rpx;
|
||||
height: 10rpx;
|
||||
background: #FF512A;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: -10rpx;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.tabs .active::before {
|
||||
width: 127rpx;
|
||||
height: 10rpx;
|
||||
filter: blur(6.599999904632568rpx);
|
||||
background: #FF5D73;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: -10rpx;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.list {
|
||||
margin-top: 36rpx;
|
||||
}
|
||||
|
||||
.item_tit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0 20rpx;
|
||||
margin-bottom: 32rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.item_tit_left {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.item_tit_right {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #D5AC66;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
.item_tit_right image {
|
||||
width: 12rpx;
|
||||
height: 22rpx;
|
||||
margin-left: 8rpx;
|
||||
}
|
||||
|
||||
.scrollView {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.item_goodsItem {
|
||||
display: inline-block;
|
||||
width: 223rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.item_goodsItem_tit {
|
||||
width: 100%;
|
||||
height: 161rpx;
|
||||
}
|
||||
|
||||
.item_goodsItem_name {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
margin-top: 20rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.item_goodsItem_msg {
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #FF512A;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
margin-top: 6rpx;
|
||||
margin-left: 13rpx;
|
||||
}
|
||||
|
||||
.item_goodsItem_msg view {
|
||||
font-weight: 500;
|
||||
font-size: 36rpx;
|
||||
}
|
||||
|
||||
.item_goodsItem_msg text {
|
||||
font-size: 22rpx;
|
||||
color: #FF512A;
|
||||
}
|
||||
|
||||
.item_goodsList {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
.list_item {
|
||||
padding-bottom: 32rpx;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
}
|
||||
|
||||
.no_border {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.merchantList {
|
||||
margin: 0 20rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.merchantItem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx 0;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.merchantItem_right {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #FFFFFF;
|
||||
width: 150rpx;
|
||||
height: 50rpx;
|
||||
background: #D5AC66;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.merchantItem_left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.merchantItem_left_img {
|
||||
width: 180rpx;
|
||||
height: 180rpx;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.merchantItem_left_msg_tit {
|
||||
font-weight: 400;
|
||||
font-size: 32rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.merchantItem_left_msg_add {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
|
||||
.merchantItem_left_msg_msg {
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #FF512A;
|
||||
background: #FFF0ED;
|
||||
padding: 2rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
.merchantItem_left_msg_tag {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 18rpx;
|
||||
}
|
||||
337
packages/communityService/index/index.vue
Normal file
337
packages/communityService/index/index.vue
Normal file
@ -0,0 +1,337 @@
|
||||
<template>
|
||||
<view class="headlth">
|
||||
<view class="swiper">
|
||||
<swiper>
|
||||
<swiper-item>
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_img.png" mode="" />
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
|
||||
<view class="tabList">
|
||||
<view class="tabItem" v-for="(item, index ) in cateList" :key="index" @click="jump(item.cate_id)">
|
||||
<view class="tabImg">
|
||||
<image :src="item.photo" mode="heightFix" />
|
||||
</view>
|
||||
<view class="tabName">
|
||||
{{item.cate_name}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="tit">
|
||||
热门服务
|
||||
</view>
|
||||
|
||||
<view class="serviceTag">
|
||||
<view class="serviceTagItem" @click="jump">
|
||||
<view class="serviceTagItem_name">家政保洁</view>
|
||||
<view class="serviceTagItem_img1">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot1.png" mode="widthFix" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceTagItem item2" @click="jump">
|
||||
<view class="serviceTagItem_name">专业保姆</view>
|
||||
<view class="serviceTagItem_img2">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot2.png" mode="widthFix" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceTagItem item3" @click="jump">
|
||||
<view class="serviceTagItem_name">家电维修</view>
|
||||
<view class="serviceTagItem_img3">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot3.png" mode="widthFix" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceTagItem item4" @click="jump">
|
||||
<view class="serviceTagItem_name">搬家拉货</view>
|
||||
<view class="serviceTagItem_img4">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot4.png" mode="widthFix" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="tabs">
|
||||
<view :class="['tab', tabIndex == '0' ? 'active' : '']" @click="changeTab" data-tab="0">服务列表</view>
|
||||
<view :class="['tab', tabIndex == '1' ? 'active' : '']" @click="changeTab" data-tab="1">商户列表</view>
|
||||
</view>
|
||||
|
||||
<view class="list" v-if="tabIndex == 0">
|
||||
<view :class="['list_item', index === serverList.length - 1 && 'no_border']" v-for="(item, index) in serverList" :key="index">
|
||||
<view class="item_tit">
|
||||
<view class="item_tit_left">{{item.cate_name}}</view>
|
||||
<view class="item_tit_right" @click="jump(item.cate_id)">
|
||||
更多
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item_goodsList">
|
||||
<scroll-view scroll-x="true" class="scrollView">
|
||||
<view class="item_goodsItem" v-for="(items, index) in item.appoints" :key="index" @click.stop="headerItemClick" :data-id="items.appoint_id">
|
||||
<view class="item_goodsItem_tit">
|
||||
<image :src="items.photo" mode="aspectFill" />
|
||||
</view>
|
||||
<view class="item_goodsItem_name">{{items.title}}</view>
|
||||
<view class="item_goodsItem_msg">
|
||||
¥
|
||||
<view>{{items.price}}</view>
|
||||
<text>/{{items.unit}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<view class="merchantList" v-if="tabIndex == 1">
|
||||
<view class="merchantItem" v-for="(item, index) in goodsList" :key="index" @click="headerShopClick(item.shop_id)">
|
||||
<view class="merchantItem_left">
|
||||
<view class="merchantItem_left_img">
|
||||
<image :src="item.photo" mode="widthFix" />
|
||||
</view>
|
||||
<view class="merchantItem_left_msg">
|
||||
<view class="merchantItem_left_msg_tit">{{item.shop_name}}</view>
|
||||
<view class="merchantItem_left_msg_add">{{item.addr}}</view>
|
||||
<view class="merchantItem_left_msg_msg">中国领先的高科技医疗设备研...</view>
|
||||
<view class="merchantItem_left_msg_tag">{{item.tags}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="merchantItem_right" @click.stop="call(item.tel)">
|
||||
电话询价
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { NavgateTo, picUrl, request } from '../../../utils/index';
|
||||
import { apiArr } from '../../../api/communityService';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tabList:[{
|
||||
name:"服务中心",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon1.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"家政保洁",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon2.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"衣物洗护",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon3.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
|
||||
},
|
||||
{
|
||||
name:"家电维修",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon4.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
|
||||
},
|
||||
{
|
||||
name:"跑腿服务",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon5.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"养车用车",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon6.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"保姆月嫂",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon7.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"家电清洗",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon8.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
|
||||
},
|
||||
{
|
||||
name:"搬家拉货",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon9.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
{
|
||||
name:"家装维修",
|
||||
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon10.png',
|
||||
url:"../ServiceMore/ServiceMore",
|
||||
},
|
||||
],
|
||||
tabIndex:"0",
|
||||
page_num:1,
|
||||
page_size:10,
|
||||
flag:false,
|
||||
flag2:false,
|
||||
serverList:[],//服务列表
|
||||
cateList:[],
|
||||
flag:false,
|
||||
HotCate:'',
|
||||
|
||||
goodsList:[],//商家列表
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getCateList() {
|
||||
const res = await request(apiArr.getCateList, 'POST', {
|
||||
page_num: this.page_num,
|
||||
page_size: this.page_size,
|
||||
area: uni.getStorageSync('city')
|
||||
})
|
||||
let flag = false
|
||||
console.log(res, 'res');
|
||||
if (res.rows && res.rows.length == this.page_size) {
|
||||
flag = true
|
||||
} else {
|
||||
flag = false
|
||||
}
|
||||
res.rows && res.rows.forEach(item => {
|
||||
item.photo = item.photo ? picUrl + item.photo : '';
|
||||
item.appoints.forEach(items => {
|
||||
items.photo = picUrl + items.photo
|
||||
})
|
||||
})
|
||||
console.log(res, 'reresss');
|
||||
this.serverList = this.serverList.concat(res.rows || []);
|
||||
this.cateList = res.rows || [];
|
||||
this.flag = flag;
|
||||
this.page_num = this.page_num + 1;
|
||||
},
|
||||
|
||||
// 热门服务模块, 目前改接口并未使用,热门模块写死展示
|
||||
async getHotCate(){
|
||||
const res = await request(apiArr.getHotCate, 'POST', {});
|
||||
console.log('getHotCategetHotCate', res);
|
||||
this.HotCate = res;
|
||||
},
|
||||
|
||||
// 获取同城服务列表
|
||||
async getAllList(){
|
||||
const res = await request(apiArr.getAllList, 'POST', {
|
||||
cate_id: 0,
|
||||
page_num: 1,
|
||||
page_size: 50,
|
||||
area: uni.getStorageSync('city')
|
||||
})
|
||||
|
||||
let flag = false
|
||||
if(res.rows && res.rows.length == this.page_size){
|
||||
flag = true
|
||||
}else{
|
||||
flag = false
|
||||
}
|
||||
if(res.rows){
|
||||
res.rows.forEach(item=>{
|
||||
item.photo = picUrl + item.photo
|
||||
})
|
||||
}
|
||||
this.tabList = res.rows;
|
||||
this.flag = flag;
|
||||
this.page_num = this.page_num + 1;
|
||||
},
|
||||
|
||||
// 获取商家列表
|
||||
async getShopList(){
|
||||
const res = await request(apiArr.getShopList, 'POST', {
|
||||
page_num: this.page_num,
|
||||
page_size: this.page_size
|
||||
});
|
||||
if(res?.list){
|
||||
let flag2 = false
|
||||
if(res.list.length == this.page_size){
|
||||
flag2 = true
|
||||
}else{
|
||||
flag2 = false
|
||||
}
|
||||
res.list.forEach(item=>{
|
||||
item.photo = picUrl + item.photo
|
||||
});
|
||||
this.goodsList = this.goodsList.concat(res.list || []);
|
||||
this.flag2 = flag2;
|
||||
this.page_num = this.page_num + 1;
|
||||
}
|
||||
},
|
||||
|
||||
jump(id){
|
||||
NavgateTo(`/packages/communityService/serviceMore/index?id=${id}`, { isLogin: false });
|
||||
},
|
||||
|
||||
|
||||
// tab 切换
|
||||
changeTab(e){
|
||||
const { tab } = e.currentTarget.dataset;
|
||||
this.tabIndex = tab;
|
||||
this.page_num = 1;
|
||||
this.flag = false;
|
||||
this.flag2 = false;
|
||||
this.serverList = [];
|
||||
this.goodsList = [];
|
||||
|
||||
if(tab == 0){
|
||||
this.getCateList()
|
||||
}else{
|
||||
this.getShopList()
|
||||
}
|
||||
},
|
||||
|
||||
headerItemClick(e) {
|
||||
const { id } = e.currentTarget.dataset;
|
||||
NavgateTo(`/packages/communityService/reservation/index?id=${id}`, {isLogin: false });
|
||||
},
|
||||
|
||||
headerShopClick(id){
|
||||
NavgateTo(`/packages/communityService/shopDetail/index?id=${id}`, { isLogin: false });
|
||||
},
|
||||
|
||||
|
||||
call(e){
|
||||
console.log('11111', e);
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: e,
|
||||
fail(err) {
|
||||
console.log('取消拨打', err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
this.getCateList(); // 获取同城服务分类列表
|
||||
this.getAllList(); // 获取同城服务列表
|
||||
this.getHotCate(); // 热门服务模块
|
||||
this.getShopList(); // 获取商家列表
|
||||
},
|
||||
onReachBottom() {
|
||||
if(this.tabIndex == 0){
|
||||
if(this.flag){
|
||||
this.getCateList()
|
||||
}
|
||||
}else{
|
||||
if(this.flag2){
|
||||
this.getShopList()
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
110
packages/communityService/reservation/index.css
Normal file
110
packages/communityService/reservation/index.css
Normal file
@ -0,0 +1,110 @@
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding-bottom: 160rpx;
|
||||
}
|
||||
|
||||
.reservation_img {
|
||||
width: 750rpx;
|
||||
height: 502rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.reservation_img image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.Tit {
|
||||
font-weight: 400;
|
||||
font-size: 40rpx;
|
||||
color: #000000;
|
||||
margin-left: 20rpx;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.money {
|
||||
display: flex;
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FF512A;
|
||||
align-items: center;
|
||||
margin-top: 20rpx;
|
||||
margin-left: 20rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.money view {
|
||||
font-size: 60rpx;
|
||||
margin-top: -19rpx;
|
||||
}
|
||||
|
||||
.money text {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0 40rpx;
|
||||
padding-top: 30rpx;
|
||||
padding-bottom: 16rpx;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
}
|
||||
|
||||
.row_tit {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.row_con {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.none {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.gray {
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
|
||||
.Tit2 {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
color: #222222;
|
||||
margin-left: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.server {
|
||||
margin: 0 40rpx;
|
||||
margin-top: 30rpx;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FFFFFF;
|
||||
width: 650rpx;
|
||||
height: 80rpx;
|
||||
background: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: fixed;
|
||||
left: 50rpx;
|
||||
right: 50rpx;
|
||||
bottom: 50rpx;
|
||||
}
|
||||
115
packages/communityService/reservation/index.vue
Normal file
115
packages/communityService/reservation/index.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<view class="box">
|
||||
<view class="reservation_img">
|
||||
<image :src="info.photo" mode="" />
|
||||
</view>
|
||||
|
||||
<view class="Tit">{{info.title}}</view>
|
||||
<view class="money">
|
||||
¥
|
||||
<view>{{info.price}}</view>
|
||||
<text>/ {{info.unit}}</text>
|
||||
</view>
|
||||
|
||||
<view class="row">
|
||||
<view class="row_tit">服务类别</view>
|
||||
<view class="row_con">{{info.type_name}}</view>
|
||||
</view>
|
||||
<view class="row">
|
||||
<view class="row_tit">营业时间</view>
|
||||
<view class="row_con">{{info.biz_time}}</view>
|
||||
</view>
|
||||
<view class="row none">
|
||||
<view class="row_tit">联系人</view>
|
||||
<view class="row_con">{{info.user_name}}</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="Tit2">商家信息</view>
|
||||
<view class="row">
|
||||
<view class="row_tit">提供商家</view>
|
||||
<view class="row_con">{{info.shop_name}}</view>
|
||||
</view>
|
||||
<view class="row">
|
||||
<view class="row_tit">联系电话</view>
|
||||
<view class="row_con" @click="call">{{info.user_mobile}}</view>
|
||||
</view>
|
||||
<view class="row none">
|
||||
<view class="row_tit">商家地址</view>
|
||||
<view class="row_con">{{info.shop_addr}}</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
<view class="Tit2">服务详情</view>
|
||||
<view class="server">
|
||||
{{info.intro}}
|
||||
</view>
|
||||
|
||||
<view class="btn" @click="reservation">
|
||||
立即预约
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
apiArr
|
||||
} from '../../../api/communityService';
|
||||
import {
|
||||
NavgateTo,
|
||||
picUrl,
|
||||
request
|
||||
} from '../../../utils';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
id: "",
|
||||
info: "",
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
async init(id) {
|
||||
const res = await request(apiArr.serverInfo, 'POST', {
|
||||
appoint_id: Number(id)
|
||||
});
|
||||
const newRes = {
|
||||
...res,
|
||||
photo: picUrl + res.photo,
|
||||
}
|
||||
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.title,
|
||||
})
|
||||
this.info = newRes;
|
||||
},
|
||||
|
||||
// 拨打电话
|
||||
call() {
|
||||
let that = this
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: this.info.user_mobile,
|
||||
fail(err) {
|
||||
console.log('取消拨打', err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
reservation() {
|
||||
NavgateTo(`/packages/communityService/reservationApply/index?id=${this.id}`, {isLogin: false });
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.id = options.id;
|
||||
this.init(options.id);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
172
packages/communityService/reservationApply/index.css
Normal file
172
packages/communityService/reservationApply/index.css
Normal file
@ -0,0 +1,172 @@
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.tit {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
color: #222222;
|
||||
margin-left: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0 50rpx;
|
||||
height: 90rpx;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
}
|
||||
|
||||
.row_tit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.row_tit image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.row_con {
|
||||
text-align: right;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.row_con image {
|
||||
height: 26rpx;
|
||||
width: 14rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.none {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.row_tit2 {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.row_tit2 image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.row_tit2 input {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.doorToDoor {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 54rpx;
|
||||
margin-right: 54rpx;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx 0;
|
||||
}
|
||||
|
||||
.doorToDoor_tit {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.doorToDoor_con {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.selectItem {
|
||||
display: flex;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
|
||||
.cir {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
border-radius: 50%;
|
||||
border: 1rpx solid #555555;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
|
||||
.active {
|
||||
background-color: #ff512a;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.agree {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 54rpx;
|
||||
padding: 30rpx 0;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #FF512A;
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FFFFFF;
|
||||
width: 650rpx;
|
||||
height: 80rpx;
|
||||
background: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
margin: 0 auto;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.popBox {
|
||||
height: 60vh;
|
||||
width: 80vw;
|
||||
padding: 30rpx;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
padding-bottom: 100rpx;
|
||||
}
|
||||
|
||||
.tit2 {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
color: #222222;
|
||||
text-align: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.know {
|
||||
width: 400rpx;
|
||||
height: 60rpx;
|
||||
border-radius: 20rpx;
|
||||
background-color: #FF512A;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
font-size: 32rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 20rpx;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
392
packages/communityService/reservationApply/index.vue
Normal file
392
packages/communityService/reservationApply/index.vue
Normal file
@ -0,0 +1,392 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="box">
|
||||
<view class="tit">请填写预约信息</view>
|
||||
<view class="row none" v-if="isreal == 1">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon1.png" mode="" />
|
||||
请选择上门时间
|
||||
</view>
|
||||
|
||||
<view class="row_con" @click="changeShow">
|
||||
{{time}}
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="row none" v-if="isreal == 2">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon2.png" mode="" />
|
||||
请选择服务时间
|
||||
</view>
|
||||
<view class="row_con" @click="changeShow2">
|
||||
{{serTime}}
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
<view class="row">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon3.png" mode="" />
|
||||
联系人姓名
|
||||
</view>
|
||||
|
||||
<view class="row_con">
|
||||
<input
|
||||
type="text"
|
||||
placeholder="请填写联系人姓名"
|
||||
placeholder-style="font-size: 26rpx;color: #999999;"
|
||||
:value="name"
|
||||
data-name='name'
|
||||
@input="headerInputClick"
|
||||
/>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="row">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon4.png" mode="" />
|
||||
联系人电话
|
||||
</view>
|
||||
|
||||
<view class="row_con">
|
||||
<input
|
||||
type="number"
|
||||
maxlength="11"
|
||||
placeholder="请填写联系人电话"
|
||||
placeholder-style="font-size: 26rpx;color: #999999;"
|
||||
:value="phone"
|
||||
data-name='phone'
|
||||
@input="headerInputClick"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="row">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon5.png" mode="" />
|
||||
请选择服务地址
|
||||
</view>
|
||||
<view class="row_con" @click="changeArea">
|
||||
|
||||
{{citys}}
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="row none">
|
||||
<view class="row_tit">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon5.png" mode="" />
|
||||
详细地址
|
||||
</view>
|
||||
|
||||
<view class="row_con">
|
||||
<input
|
||||
type="text"
|
||||
placeholder="请填写详细地址"
|
||||
placeholder-style="font-size: 26rpx;color: #999999;"
|
||||
:value="add"
|
||||
data-name='add'
|
||||
@input="headerInputClick"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
<view class="doorToDoor">
|
||||
<view class="doorToDoor_tit">是否上门服务</view>
|
||||
<view class="selectItem" @click="changeCir(1)">
|
||||
<view :class="['cir', isreal == 1 ? 'active' : '']"></view>
|
||||
是
|
||||
</view>
|
||||
<view class="selectItem" @click="changeCir(2)">
|
||||
<view :class="['cir', isreal == 2 ? 'active' : '']"></view>
|
||||
否
|
||||
</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
<view class="row none">
|
||||
<view class="row_tit2">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon6.png" mode="" />
|
||||
<input
|
||||
type="text"
|
||||
placeholder="给商家捎句话"
|
||||
placeholder-style="font-size: 26rpx;color: #999999;"
|
||||
:value="msg"
|
||||
data-name='msg'
|
||||
@input="headerInputClick"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="agree">
|
||||
<view :class="['cir', agree ? 'active' : '']" @click="changeAgree"></view>
|
||||
|
||||
<view @click="changeShow3">
|
||||
我已阅读并同意服务合同中的内容
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="btn" @click="submit">提交申请 </view>
|
||||
</view>
|
||||
|
||||
<u-datetime-picker
|
||||
:show="show"
|
||||
mode="datetime"
|
||||
:closeOnClickOverlay="true"
|
||||
:minDate="minDate"
|
||||
:formatter="formatter"
|
||||
@confirm="onInput"
|
||||
@cancel="onClose"
|
||||
@close="onClose"
|
||||
/>
|
||||
|
||||
|
||||
<areaPopup :show="show2" @selectArea='headerAreaClick' @close='onClose' />
|
||||
|
||||
|
||||
|
||||
<u-popup :show="show3" mode="center" @close="onClose" round="20rpx" closeOnClickOverlay>
|
||||
<view class="pop_body">
|
||||
<view class="popBox">
|
||||
<view class="tit2">服务声明</view>
|
||||
乙方指定的家政服务人员须遵守以下行为准则:
|
||||
1)遵守国家各项法律、法规和社会公德;执行《公民道德建设实施纲要》,自尊自强,爱岗敬业;遵守企业各项规章制度,维护经营者和甲方的合法权益。
|
||||
2)遵守职业道德,尊重甲方生活习俗,主动适应甲方,视甲方如亲人,不虐待所照看的老、幼、病、残人员;不泄露甲方隐私;不参与甲方家庭及邻里的矛盾纠纷,不传闲话,以免激化矛盾;不向甲方借钱或索要财物;在离开甲方家庭时,要主动打开自己的包裹让其检查,以示尊重。
|
||||
3)遵守合同条款,不无故违约,不无故要求换户或不辞而别。如与甲方发生矛盾,出现甲方侵犯家政服务人员合法权益,或变更服务地址、服务工种等,无论何种原因家政服务人员均应先行告知经营者,不要擅自处理。
|
||||
4)努力学习服务技能,完成经营者和甲方安排的工作任务。对不会使用的器具,未经经营者指导和甲方允许不要使用。未经甲方同意不使用其通讯工具和电脑等设备。
|
||||
5)保证自身和甲方的安全。不要与异性成、青年人同居一室;不带亲朋好友在甲方家中停留或食宿;不擅自外出或夜不归宿,如有特殊情况不能按时返回,要征得甲方同意;要注意防火、防盗。
|
||||
第九条 服务人员仪态仪表 乙方指定的家政服务人员须遵守以下仪态仪表要求: (1)讲究个人卫生,着装整洁大方,不能过于随意,不穿紧身衣裤或过于暴露的服装。 (2)佩戴饰物要适当,不浓妆艳抹,不留长指甲和涂指甲油。
|
||||
3)言谈举止大方得体,与甲方交流时要正视对方,不要左顾右盼,不能双臂交叉或双手插在兜里。
|
||||
</view>
|
||||
<view class="know" @click="onClose">我已知晓</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
apiArr
|
||||
} from '../../../api/communityService';
|
||||
import {
|
||||
request,
|
||||
isPhone
|
||||
} from '../../../utils';
|
||||
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
time: "", //上门时间
|
||||
serTime: "", //服务时间
|
||||
name: "", //姓名
|
||||
phone: "", //电话
|
||||
citys: "", //服务地址
|
||||
add: "", //详细地址
|
||||
isreal: 1, //是否上门
|
||||
|
||||
msg: "", //信息
|
||||
id: "",
|
||||
agree: false, //是否阅读同意
|
||||
type: "1", //1上门时间 2服务时间
|
||||
info: "",
|
||||
|
||||
GoodsMsg: "", //商户信息
|
||||
orderMsg: "",
|
||||
|
||||
show: false,
|
||||
show2: false,
|
||||
show3: false,
|
||||
minDate: new Date().getTime(),
|
||||
formatter(type, value) {
|
||||
if (type === 'year') {
|
||||
return `${value}年`;
|
||||
}
|
||||
if (type === 'month') {
|
||||
return `${value}月`;
|
||||
}
|
||||
if (type === 'day') {
|
||||
return `${value}日`;
|
||||
}
|
||||
return value;
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init(id) {
|
||||
const res = await request(apiArr.serverInfo, 'POST', {
|
||||
appoint_id: Number(id)
|
||||
});
|
||||
this.info = res;
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.title
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
changeShow() {
|
||||
this.show = !this.show;
|
||||
this.type = 1;
|
||||
},
|
||||
|
||||
//
|
||||
changeShow2() {
|
||||
this.show = !this.show;
|
||||
this.type = 2;
|
||||
},
|
||||
|
||||
// 关闭弹窗选择器
|
||||
onClose(){
|
||||
this.show = false;
|
||||
this.show2 = false;
|
||||
this.show3 = false;
|
||||
},
|
||||
|
||||
// 时间选择器点击确定
|
||||
onInput(event){
|
||||
const date = new Date(event.value); // 获取选中的 Date 对象
|
||||
const year = date.getFullYear(); // 获取年份
|
||||
const month = date.getMonth() + 1; // 获取月份(注意月份从 0 开始,需要 +1)
|
||||
const day = date.getDate(); // 获取日期
|
||||
const hours =date.getHours()
|
||||
const minutes = date.getMinutes();
|
||||
const time = `${year}-${month}-${day} ${hours}:${minutes}`;
|
||||
console.log('time', time, 'type', this.type);
|
||||
this.show = false;
|
||||
if(this.type == 1){
|
||||
this.time = time;
|
||||
}else{
|
||||
this.serTime = time;
|
||||
}
|
||||
},
|
||||
|
||||
// input 输入框输入值、
|
||||
headerInputClick(e) {
|
||||
console.log('eeee', e)
|
||||
const { name } = e.currentTarget.dataset;
|
||||
const { value } = e.detail;
|
||||
this[name] = value;
|
||||
},
|
||||
|
||||
// 地址选择弹窗
|
||||
changeArea(){
|
||||
this.show2 = true;
|
||||
},
|
||||
|
||||
headerAreaClick(data) {
|
||||
console.log('接受参数值', data);
|
||||
this.citys = `${data.confirmProv.name}${data.confirmCity.area_name}${data.confirmDist.business_name}`;
|
||||
this.show2 = false;
|
||||
},
|
||||
|
||||
changeCir(e){
|
||||
this.isreal = e
|
||||
},
|
||||
|
||||
// 打开服务合同弹窗
|
||||
changeShow3(){
|
||||
this.show3 = true
|
||||
},
|
||||
|
||||
// 同意服务合同
|
||||
changeAgree(){
|
||||
this.agree = !this.agree;
|
||||
},
|
||||
|
||||
|
||||
async submit() {
|
||||
console.log('他啥都', this);
|
||||
if(this.isreal == '1'){
|
||||
if(!this.time){
|
||||
uni.showToast({
|
||||
title: '请选择上门时间',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
}else{
|
||||
if(!this.serTime){
|
||||
uni.showToast({
|
||||
title: '请选择服务时间',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
if(!this.name){
|
||||
uni.showToast({
|
||||
title: '请填写联系人姓名',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
if(!this.phone){
|
||||
uni.showToast({
|
||||
title: '请填写联系人电话',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
if(!isPhone(this.phone)){
|
||||
uni.showToast({
|
||||
title: '请填写正确电话',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
if(!this.citys){
|
||||
uni.showToast({
|
||||
title: '请选择服务地址',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
if(!this.add){
|
||||
uni.showToast({
|
||||
title: '请填写详细地址',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
if(!this.agree){
|
||||
uni.showToast({
|
||||
title: '请阅读合同内容',
|
||||
icon:"none"
|
||||
})
|
||||
return
|
||||
}
|
||||
let svctime
|
||||
if(this.isreal == '1'){
|
||||
svctime = this.time
|
||||
}else{
|
||||
svctime = this.serTime
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '申请中...',
|
||||
mask:true
|
||||
})
|
||||
const res = await request(apiArr.createServerOrder, 'POST', {
|
||||
addr: this.citys + this.add,
|
||||
appoint_id: this.info.appoint_id,
|
||||
capon_id: 0,
|
||||
cate_id: this.info.cate_id,
|
||||
name: this.name,
|
||||
order_type: this.type,
|
||||
shop_id: this.info.shop_id,
|
||||
svctime,
|
||||
tel: this.phone
|
||||
}, { silent: false });
|
||||
console.log('12332322', res);
|
||||
this.orderMsg = res;
|
||||
// that.getGoodsMsg()
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.id = options.id;
|
||||
this.init(options.id);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
154
packages/communityService/serviceMore/index.css
Normal file
154
packages/communityService/serviceMore/index.css
Normal file
@ -0,0 +1,154 @@
|
||||
.tabList {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.tabItem {
|
||||
display: flex;
|
||||
width: 20%;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-bottom: 46rpx;
|
||||
}
|
||||
|
||||
.tabImg {
|
||||
height: 54rpx;
|
||||
}
|
||||
|
||||
.tabName {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.tit {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
color: #222222;
|
||||
margin-left: 20rpx;
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
|
||||
.serverMore {
|
||||
background-color: #fff;
|
||||
padding-bottom: 60rpx;
|
||||
}
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.serverList {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 52rpx;
|
||||
margin-top: 30rpx;
|
||||
padding-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.serverItem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
}
|
||||
|
||||
.serverItem_img {
|
||||
height: 54rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.List {
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx 0;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.item_left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.item_left_msg_money {
|
||||
display: flex;
|
||||
|
||||
}
|
||||
|
||||
|
||||
.item_right {
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #FFFFFF;
|
||||
width: 150rpx;
|
||||
height: 50rpx;
|
||||
background: #D5AC66;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
|
||||
.item_left_img {
|
||||
width: 180rpx;
|
||||
height: 180rpx;
|
||||
border-radius: 30rpx;
|
||||
overflow: hidden;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.item_left_msg_tit {
|
||||
font-weight: 400;
|
||||
font-size: 32rpx;
|
||||
color: #000000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.item_left_msg_time {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
|
||||
.item_left_msg_money {
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #FF512A;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.item_left_msg_money view {
|
||||
font-size: 36rpx;
|
||||
}
|
||||
|
||||
.phone {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
background: #FFF2DA;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.phone image {
|
||||
width: 24rpx;
|
||||
height: 24rpx;
|
||||
}
|
||||
89
packages/communityService/serviceMore/index.vue
Normal file
89
packages/communityService/serviceMore/index.vue
Normal file
@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<view class="serverMore">
|
||||
<view class="tabList">
|
||||
<view class="tabItem" v-for="(item, index) in serverList" :key="index" @click="getList2(item.cate_id)">
|
||||
<view class="tabImg">
|
||||
<image :src="item.photo" mode="" />
|
||||
</view>
|
||||
<view class="tabName">{{item.cate_name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
<view class="List">
|
||||
<view class="item" v-for="(item, index) in tabList" :key="index">
|
||||
<view class="item_left">
|
||||
<view class="item_left_img">
|
||||
<image :src="item.photo" mode="widthFix" />
|
||||
</view>
|
||||
<view class="item_left_msg">
|
||||
<view class="item_left_msg_tit">
|
||||
{{item.title}}
|
||||
<view class="phone" @click="call">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/phone.png" mode="widthFix" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="item_left_msg_time">服务时间:{{item.biz_time}}</view>
|
||||
<view class="item_left_msg_money">
|
||||
¥ <view>{{item.price}}</view>/{{item.unit}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item_right" @click="reservation(item.appoint_id)">
|
||||
预约
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { apiArr } from '../../../api/communityService';
|
||||
import { picUrl, request } from '../../../utils';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
flag: false,
|
||||
cateid: "",
|
||||
page_num: 1,
|
||||
page_size: 10,
|
||||
serverList: [],
|
||||
tabList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getCateList(id) {
|
||||
const res = await request(apiArr.getAllList, 'POST', {
|
||||
cate_id: Number(id),
|
||||
page_num: 1,
|
||||
page_size: 50
|
||||
})
|
||||
let flag = false
|
||||
if (res.rows && res.rows.length == this.page_size) {
|
||||
flag = true
|
||||
} else {
|
||||
flag = false
|
||||
}
|
||||
res.rows && res.rows.forEach(item => {
|
||||
item.photo = picUrl + item.photo
|
||||
item.cate.photo = picUrl + item.cate.photo
|
||||
})
|
||||
console.log(res, 'ssss');
|
||||
this.tabList = this.tabList.concat(res.rows || []);
|
||||
this.flag = flag;
|
||||
this.page_num = this.page_num + 1;
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
|
||||
this.cateid = options.id;
|
||||
// that.getDoorToDoorList()
|
||||
this.getCateList(options.id)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
185
packages/communityService/shopDetail/index.css
Normal file
185
packages/communityService/shopDetail/index.css
Normal file
@ -0,0 +1,185 @@
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.banner {
|
||||
width: 710rpx;
|
||||
height: 300rpx;
|
||||
border-radius: 30rpx;
|
||||
margin: 0 auto;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.banner_pic {
|
||||
width: 710rpx;
|
||||
height: 300rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.tit {
|
||||
font-weight: bold;
|
||||
font-size: 40rpx;
|
||||
color: #000000;
|
||||
margin-top: 40rpx;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 20rpx;
|
||||
padding-bottom: 30rpx;
|
||||
border-bottom: 1rpx solid #E6E6E6;
|
||||
}
|
||||
|
||||
.msg_left_1 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.msg_left_2 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.msg_left_1 image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.msg_left_2 image {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.msg_left_1 view {
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
border: 1rpx solid #D5AC66;
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #D5AC66;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-left: 20rpx;
|
||||
padding: 2rpx 10rpx;
|
||||
}
|
||||
|
||||
.msg {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0 20rpx;
|
||||
margin-right: 48rpx;
|
||||
margin-top: 28rpx;
|
||||
}
|
||||
|
||||
.msg_right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.msg_right image {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.msg_right2 {
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
|
||||
.tag {
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #FF512A;
|
||||
background: #FFD8D0;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
border: 1rpx solid #FF512A;
|
||||
display: inline-block;
|
||||
padding: 2rpx 10rpx;
|
||||
margin-left: 18rpx;
|
||||
}
|
||||
|
||||
.imgList {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
margin: 30rpx 20rpx;
|
||||
}
|
||||
|
||||
.imgList image {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.subtit {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
color: #000000;
|
||||
margin-top: 30rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.subCon {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #222222;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.subCon view {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.payList {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
|
||||
.payBtn {
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FFFFFF;
|
||||
width: 650rpx;
|
||||
height: 80rpx;
|
||||
background: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.payBtn2 {
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FF512A;
|
||||
width: 650rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
border: 1rpx solid #FF512A;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
99
packages/communityService/shopDetail/index.vue
Normal file
99
packages/communityService/shopDetail/index.vue
Normal file
@ -0,0 +1,99 @@
|
||||
<template>
|
||||
<view class="box">
|
||||
<view class="banner">
|
||||
<image class="banner_pic" :src="info.photo" mode="" />
|
||||
</view>
|
||||
|
||||
<view class="tit">{{info.shop_name}}</view>
|
||||
<view class="msg">
|
||||
<view class="msg_left">
|
||||
<view class="msg_left_1">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_time.png" mode="" />
|
||||
{{info.opening_time}}-{{info.closing_time}}
|
||||
<view>{{info.is_open === 1 ? '营业' :'停业'}}</view>
|
||||
</view>
|
||||
<view class="msg_left_2">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="" />
|
||||
{{info.addr}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="msg_right">
|
||||
<view class="msg_right1" @click="call">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_phone.png" mode="" />
|
||||
电话
|
||||
</view>
|
||||
<view class="msg_right2" @click="handleOptionClick">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="" />
|
||||
导航
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="imgList">
|
||||
<image v-for="(item, index) in info.picList" :key="index" :data-pic="item" @click="headerPicClick" :src="item" mode="aspectFill" />
|
||||
</view>
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="gray"></view>
|
||||
|
||||
<view class="subtit">公告</view>
|
||||
<view class="subCon">{{info.presentation}}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { picUrl, request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/communityService';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
id: "",
|
||||
info: ""
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init(id) {
|
||||
const res = await request(apiArr.getGoodsDesc, 'POST', {
|
||||
shop_id: Number(id)
|
||||
})
|
||||
const newRes = {
|
||||
...res,
|
||||
photo: picUrl + res.photo
|
||||
};
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.shop_name
|
||||
});
|
||||
this.info = newRes;
|
||||
|
||||
},
|
||||
|
||||
// 拨打电话
|
||||
call() {
|
||||
let that = this
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: this.info.tel,
|
||||
fail(err) {
|
||||
console.log('取消拨打', err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 导航
|
||||
handleOptionClick() {
|
||||
uni.openLocation({
|
||||
latitude: Number(this.info.lat),
|
||||
longitude: Number(this.info.lng),
|
||||
name: this.info.shop_name,
|
||||
})
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.id = options.id;
|
||||
this.init(options.id);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
73
packages/user/index/index.css
Normal file
73
packages/user/index/index.css
Normal file
@ -0,0 +1,73 @@
|
||||
.header {
|
||||
margin-left: 20rpx;
|
||||
color: #222222;
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.item{
|
||||
display:flex;
|
||||
border-bottom:1px solid #e6e6e6;
|
||||
height: 90rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-left: 52rpx;
|
||||
margin-right: 48rpx;
|
||||
}
|
||||
|
||||
.item-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.item-title {
|
||||
font-size: 26rpx;
|
||||
color: #999999;
|
||||
}
|
||||
.item-icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.item-right {
|
||||
/* flex: 1; */
|
||||
text-align: right;
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #222222;
|
||||
}
|
||||
.right-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
.item-right-icon {
|
||||
width: 13rpx;
|
||||
height: 26rpx;
|
||||
}
|
||||
|
||||
/* TODO: 为什么不生效? */
|
||||
.not-border{
|
||||
border-bottom: none;
|
||||
}
|
||||
.item:last-child{
|
||||
border-bottom:none
|
||||
}
|
||||
.line {
|
||||
background: #F9F9F9;
|
||||
height: 20rpx;
|
||||
}
|
||||
.desc {
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #FF512A;
|
||||
}
|
||||
.quit_login {
|
||||
margin: 10rpx 50rpx 0;
|
||||
background: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
height: 80rpx;
|
||||
color: #FFFFFF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
134
packages/user/index/index.vue
Normal file
134
packages/user/index/index.vue
Normal file
@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="item" data-url="/packages/user/uploadAvatar/index" data-title="上传头像" @click="handleSelectClick">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_422.png" />
|
||||
<view class="item-title">上传头像</view>
|
||||
</view>
|
||||
<van-icon name="arrow" color="#D5AC66" />
|
||||
</view>
|
||||
|
||||
<view class="item">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Classroom.png" />
|
||||
<view class="item-title">当前账户</view>
|
||||
</view>
|
||||
<view class="item-right">{{userInfo.user_name}}</view>
|
||||
</view>
|
||||
|
||||
<view class="item" data-url="/packages/user/resetPwd/index" data-title="修改登录密码" data-type="login"
|
||||
@click="handleSelectClick">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_423.png" />
|
||||
<view class="item-title">修改登录密码</view>
|
||||
</view>
|
||||
<van-icon name="arrow" color="#D5AC66" />
|
||||
</view>
|
||||
|
||||
<view class="item not-border" data-url="/packages/user/resetPwd/index" data-title="修改支付密码" data-type="pay"
|
||||
@click="handleSelectClick">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_424.png" />
|
||||
<view class="item-title">修改支付密码</view>
|
||||
</view>
|
||||
<van-icon name="arrow" color="#D5AC66" />
|
||||
</view>
|
||||
|
||||
|
||||
<!-- 灰色分割线 -->
|
||||
<view class="line"></view>
|
||||
<view class="item not-border">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_425.png" />
|
||||
<view class="item-title">绑定手机</view>
|
||||
</view>
|
||||
<view class="item-right desc">{{phoneNum}}</view>
|
||||
</view>
|
||||
<button class="quit_login" @click="handleQuitLoginClick">退出登录</button>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { NavgateTo, request } from '../../../utils/index';
|
||||
import { apiArr } from '../../../api/login';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
userInfoList: [{
|
||||
pic: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_422.png',
|
||||
desc: '上传头像',
|
||||
url: "/packages/user/uploadAvatar/index",
|
||||
isShowPic: true,
|
||||
},
|
||||
{
|
||||
pic: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Classroom.png',
|
||||
desc: '当前账户',
|
||||
url: "",
|
||||
text: "微信用户"
|
||||
},
|
||||
{
|
||||
pic: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_423.png',
|
||||
desc: '修改登录密码',
|
||||
type: 'login',
|
||||
url: "/packages/user/resetPwd/index",
|
||||
isShowPic: true,
|
||||
},
|
||||
{
|
||||
pic: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_424.png',
|
||||
desc: '修改支付密码',
|
||||
type: 'pay',
|
||||
url: "/packages/user/resetPwd/index",
|
||||
isShowPic: true,
|
||||
isLast: true,
|
||||
},
|
||||
],
|
||||
userInfo: {},
|
||||
phoneNum: uni.getStorageSync('phone'),
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
const res = await request(apiArr.loginInfo, 'POST', {});
|
||||
this.userInfo = res;
|
||||
},
|
||||
|
||||
// 跳转指定页面url
|
||||
handleSelectClick(event) {
|
||||
const { url, title, type } = event.currentTarget.dataset
|
||||
if (!url) return;
|
||||
NavgateTo(`${url}?title=${title}&type=${type}`, { isLogin: false })
|
||||
},
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*/
|
||||
handleQuitLoginClick() {
|
||||
console.log('退出登录');
|
||||
uni.removeStorageSync('ctoken');
|
||||
uni.removeStorageSync('userId');
|
||||
uni.removeStorageSync('phone');
|
||||
uni.removeStorageSync('device_id');
|
||||
uni.removeStorageSync('dealerId');
|
||||
uni.removeStorageSync('is_deal');
|
||||
uni.removeStorageSync('is_dev');
|
||||
uni.removeStorageSync('is_shop');
|
||||
uni.removeStorageSync('openId');
|
||||
uni.removeStorageSync('shopArea');
|
||||
uni.removeStorageSync('shopId');
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
111
packages/user/marketing/index.css
Normal file
111
packages/user/marketing/index.css
Normal file
@ -0,0 +1,111 @@
|
||||
.container {
|
||||
height: 100vh;
|
||||
background: linear-gradient(to bottom, #FFE7E1, #FFFFFF);
|
||||
/* background-attachment: fixed; */
|
||||
background-size: cover;
|
||||
padding-top: 20rpx;
|
||||
padding-bottom: 20%;
|
||||
}
|
||||
|
||||
/* 头部 */
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 25rpx;
|
||||
margin-top: 83rpx;
|
||||
margin-bottom: 52rpx;
|
||||
}
|
||||
|
||||
/* 头像 */
|
||||
.left {
|
||||
display: flex;
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
background-color: #FF7354;
|
||||
margin-right: 30rpx;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* 头像图片 */
|
||||
.avatar {
|
||||
width: 60%;
|
||||
height: 55%;
|
||||
margin-bottom: 20rpx;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.user_name {
|
||||
font-size: 36rpx;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
|
||||
.share_poster {
|
||||
display: inline-block;
|
||||
font-size: 24rpx;
|
||||
color: #FFFFFF;
|
||||
padding: 5rpx 14rpx 7rpx 15rpx;
|
||||
background-color: #FF9077;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
}
|
||||
|
||||
.main {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
background: #FFFFFF;
|
||||
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
||||
margin: 0 15rpx 41rpx 25rpx;
|
||||
padding: 43rpx 44rpx 47rpx 34rpx;
|
||||
}
|
||||
.item {
|
||||
flex: 1 0 calc(33.333% - 10px);
|
||||
background-color: #FFFFFF;
|
||||
text-align: center;
|
||||
margin-bottom: 50rpx;
|
||||
}
|
||||
.has-margin-bottom {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.text {
|
||||
font-size: 40rpx;
|
||||
font-weight: 400;
|
||||
color: #222222;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
.desc {
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
margin-left: 22rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
.order {
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
.nav_icon {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.grid-text {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.uicon-volume {
|
||||
font-size: 28rpx !important;
|
||||
}
|
||||
.u-grid-item {
|
||||
margin-bottom: 43rpx;
|
||||
}
|
||||
132
packages/user/marketing/index.vue
Normal file
132
packages/user/marketing/index.vue
Normal file
@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="header">
|
||||
<view class="left">
|
||||
<image class="avatar" :src="userInfo.img"></image>
|
||||
</view>
|
||||
<view class="right">
|
||||
<view class="user_name" @click="handleUserInfoClick">
|
||||
{{ userInfo.user_name ? userInfo.user_name : '微信用户' }}
|
||||
(ID:{{userInfo.user_id}})
|
||||
</view>
|
||||
<view class="share_poster" @click="handleShareClick">推广海报</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 推广下级 -->
|
||||
<view class="main">
|
||||
<view class="item">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">累计推广下级</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">累计邀请业主</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">累计推广订单</view>
|
||||
</view>
|
||||
<view class="item has-margin-bottom">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">今日推广下级</view>
|
||||
</view>
|
||||
<view class="item has-margin-bottom">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">今日邀请业主</view>
|
||||
</view>
|
||||
<view class="item has-margin-bottom">
|
||||
<view class="text">{{0}}</view>
|
||||
<view class="desc">今日推广订单</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="navigation">功能管理</view>
|
||||
<view class="order">
|
||||
<!-- 功能列表 -->
|
||||
<u-grid col="4" :border="false" >
|
||||
<u-grid-item @click="headerOrderClick(item)" v-for="(item, index) in functional_List" :key="index">
|
||||
<image class="nav_icon" :src="item.image" mode=""></image>
|
||||
<text class="grid-text">{{item.name}}</text>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { NavgateTo, picUrl, request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/login';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
functional_List: [{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_25.png",
|
||||
"name": "推广海报",
|
||||
"url": "/packages/user/share/index",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_26.png",
|
||||
"name": "我的下级",
|
||||
"url": "",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_35.png",
|
||||
"name": "下级订单",
|
||||
"url": "",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_30.png",
|
||||
"name": "联系平台",
|
||||
"url": "",
|
||||
"type": "h5"
|
||||
},
|
||||
],
|
||||
userInfo: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
const res = await request(apiArr.loginInfo, 'POST', {});
|
||||
const newRes = {
|
||||
...res,
|
||||
img: picUrl + res.img || 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_309.png',
|
||||
}
|
||||
this.userInfo = newRes;
|
||||
},
|
||||
|
||||
handleUserInfoClick() {
|
||||
NavgateTo('/packages/user/index/index', { isLogin: false })
|
||||
},
|
||||
handleShareClick() {
|
||||
NavgateTo('/packages/user/share/index', { isLogin: false })
|
||||
},
|
||||
|
||||
headerOrderClick(event) {
|
||||
console.log('11111', event)
|
||||
const { url } = event;
|
||||
if (!url) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '此功能暂未开通!',
|
||||
showCancel: false,
|
||||
})
|
||||
} else {
|
||||
NavgateTo(url, { isLogin: false })
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
86
packages/user/points/index.css
Normal file
86
packages/user/points/index.css
Normal file
@ -0,0 +1,86 @@
|
||||
.points-overview {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
padding: 40rpx 20rpx 30rpx;
|
||||
height: 185rpx;
|
||||
}
|
||||
|
||||
.points-overview__content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.points-overview__label {
|
||||
font-size: 26rpx;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.points-overview__num {
|
||||
margin-top: 10rpx;
|
||||
margin-left: 12rpx;
|
||||
font-weight: bold;
|
||||
font-size: 64rpx;
|
||||
line-height: 75rpx;
|
||||
color: #FF512A;
|
||||
}
|
||||
|
||||
.points-overview__action {
|
||||
flex-shrink: 1;
|
||||
padding: 5rpx 22rpx;
|
||||
width: max-content;
|
||||
height: max-content;
|
||||
border-radius: 40rpx;
|
||||
background-color: rgba(255, 81, 42, 0.1);
|
||||
white-space: nowrap;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.points-overview__desc {
|
||||
margin-right: 10rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 30rpx;
|
||||
color: #FF512A;
|
||||
white-space: nowrap;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.block-divider {
|
||||
width: 100%;
|
||||
height: 20rpx;
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
.record-list {
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
|
||||
.record-list-item {
|
||||
padding: 30rpx 0;
|
||||
font-size: 26rpx;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.record-list-item__content {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.record-list-item__label {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.record-list-item__num {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
|
||||
.record-list-item__datetime {
|
||||
margin-top: 10rpx;
|
||||
font-size: 22rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.record-list-item + .record-list-item {
|
||||
border-top: 1px solid #E6E6E6;
|
||||
}
|
||||
84
packages/user/points/index.vue
Normal file
84
packages/user/points/index.vue
Normal file
@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="points-overview">
|
||||
<view class="points-overview__content">
|
||||
<view class="points-overview__label">账户积分</view>
|
||||
<view class="points-overview__num">{{ pointsNum }}</view>
|
||||
</view>
|
||||
<navigator class="points-overview__action" url="/packages/user/pointsRule/index">
|
||||
<text class="points-overview__desc">积分规则</text>
|
||||
<image
|
||||
style="width: 12rpx; height: 22rpx;"
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/more.primary.12x22.png"
|
||||
>
|
||||
</image>
|
||||
</navigator >
|
||||
</view>
|
||||
|
||||
<view class="block-divider"></view>
|
||||
|
||||
<view class="record-list">
|
||||
<view
|
||||
v-for="(item, index ) in records"
|
||||
:key="index"
|
||||
class="record-list-item"
|
||||
>
|
||||
<view class="record-list-item__content">
|
||||
<view class="record-list-item__label">{{ item.source }}</view>
|
||||
<view class="record-list-item__num">+{{ item.integral }}</view>
|
||||
</view>
|
||||
<view class="record-list-item__datetime">{{ item.create_time }}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request } from '../../../utils';
|
||||
import { apiArr } from '../../../api/user';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
count: 0,
|
||||
records: [],
|
||||
pointsNum: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init () {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
})
|
||||
const res = await request(apiArr.signIntegral,"POST", {});
|
||||
this.pointsNum = res.integral;
|
||||
await this.getSignCycle();
|
||||
},
|
||||
|
||||
async getSignCycle () {
|
||||
const res = await request(apiArr.signCycle, 'POST', {});
|
||||
const { start_time, end_time, day_num } = res;
|
||||
this.getSignList(start_time, end_time, day_num)
|
||||
},
|
||||
|
||||
async getSignList(startTime, endTime, dayNum) {
|
||||
const res = await request(apiArr.signList, 'POST', {
|
||||
page_num: 1,
|
||||
page_size: dayNum,
|
||||
sign_date: [startTime, endTime]
|
||||
});
|
||||
uni.hideLoading();
|
||||
this.records = res.rows;
|
||||
},
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
23
packages/user/pointsRule/index.css
Normal file
23
packages/user/pointsRule/index.css
Normal file
@ -0,0 +1,23 @@
|
||||
.desc-doc {
|
||||
padding: 30rpx 28rpx;
|
||||
}
|
||||
|
||||
.desc-title {
|
||||
font-weight: bold;
|
||||
font-size: 36rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.section-content {
|
||||
margin-top: 20rpx;
|
||||
font-size: 24rpx;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.section-content--grey {
|
||||
color: #999;
|
||||
}
|
||||
44
packages/user/pointsRule/index.vue
Normal file
44
packages/user/pointsRule/index.vue
Normal file
@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<view class="desc-doc">
|
||||
<view class="desc-title">积分兑换规则</view>
|
||||
<view class="section">
|
||||
<view class="section-title">一. 积分获取:</view>
|
||||
<view class="section-content">1、完成购物。在平台进行消费支付可,即可获得官方商城积分,10元可换取1积分;订单支付成功后到账;</view>
|
||||
<view class="section-content">2、平台签到赠送积分。</view>
|
||||
</view>
|
||||
<view class="section">
|
||||
<view class="section-title">二. 兑换规则</view>
|
||||
<view class="section-content">积分可在官方商城兑换商品:</view>
|
||||
<view class="section-content section-content--grey">· 折扣券——官方商城定期推出积分兑换折扣卷活动,兑换折扣卷后需在有效期内使用,有效期及使用规则请见折扣卷详情;
|
||||
</view>
|
||||
<view class="section-content section-content--grey">· 其他——有效期及使用规则请见商品详情;</view>
|
||||
<view class="section-content">
|
||||
兑换后会扣减“兑换积分”,兑换的礼券及兑换积分不能退回;同类礼券每笔订单限使用一张,仅限本ID使用,不能折算为现金、也不能再次兑换为积分;已兑换的礼券可在“我的账户 我的积分”的明细中查询。兑换礼券均有有效期,请及时使用。
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
128
packages/user/pointsSign/index.css
Normal file
128
packages/user/pointsSign/index.css
Normal file
@ -0,0 +1,128 @@
|
||||
.container {
|
||||
width: 750rpx;
|
||||
height: 902rpx;
|
||||
background: linear-gradient(0deg, rgba(255,182,92,0) 0%, #ED7554 80%);
|
||||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||||
}
|
||||
.header {
|
||||
margin-top: 57rpx;
|
||||
margin-left: 34rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.left_detail {
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
background: rgba(255,255,255,0.2);
|
||||
overflow: auto;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding-right: 24rpx;
|
||||
}
|
||||
.gold_icon {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin: 8rpx 20rpx 8rpx 17rpx;
|
||||
}
|
||||
.points {
|
||||
font-weight: 400;
|
||||
font-size: 40rpx;
|
||||
color: #FFFFFF;
|
||||
margin-right: 25rpx;
|
||||
}
|
||||
.tomorrow_sign {
|
||||
margin-top: 20rpx;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.right_desc {
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
font-size: 80rpx;
|
||||
background: linear-gradient(90.00002264849354deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%);
|
||||
}
|
||||
.rigth_icon {
|
||||
width: 408rpx;
|
||||
height: 94rpx;
|
||||
}
|
||||
|
||||
|
||||
.main {
|
||||
/* width: 100%; */
|
||||
background: url('https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Rectangle_112.png');
|
||||
border-radius: 30px 30px 30px 30px;
|
||||
border: 1px solid #FFFFFF;
|
||||
padding: 25rpx 20rpx 0;
|
||||
margin-top: 22rpx;
|
||||
position: relative;
|
||||
}
|
||||
.center_icon {
|
||||
width: 382rpx;
|
||||
height: 283rpx;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: -173rpx;
|
||||
}
|
||||
.center_header {
|
||||
width: 710rpx;
|
||||
display: inline-flex;
|
||||
background: #FCF7DD;
|
||||
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
||||
}
|
||||
.signed {
|
||||
font-weight: 400;
|
||||
font-size: 32rpx;
|
||||
color: #222222;
|
||||
margin: 36rpx 0 36rpx 46rpx;
|
||||
}
|
||||
.center_time {
|
||||
font-weight: 400;
|
||||
color: #D5AC66;
|
||||
margin: 36rpx 28rpx 36rpx 163rpx;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.points_detail {
|
||||
margin-top: 40rpx;
|
||||
width: 750rpx;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.day_detail {
|
||||
width: 90rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.item {
|
||||
background: #FFECE7;
|
||||
border-radius: 10rpx 10rpx 10rpx 10rpx;
|
||||
width: 90rpx;
|
||||
height: 110rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
.red_border {
|
||||
border: 1rpx solid #FF512A;
|
||||
|
||||
}
|
||||
.points_time {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
margin: 11rpx 0 11rpx;
|
||||
}
|
||||
.points_icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.day_time {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #000000;
|
||||
margin-top: 10rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.color_red {
|
||||
color: #FF512A;
|
||||
}
|
||||
300
packages/user/pointsSign/index.vue
Normal file
300
packages/user/pointsSign/index.vue
Normal file
@ -0,0 +1,300 @@
|
||||
<template>
|
||||
<view class="container" :style="{paddingTop: top + 'px'}">
|
||||
<u-navbar title="签到积分" leftIconColor="#FFFFFF" titleStyle="color: #FFFFFF" bgColor="transparent" leftIconSize="20px"
|
||||
:autoBack="true" />
|
||||
|
||||
<view class="header">
|
||||
<view class="header_left">
|
||||
<view class="left_detail" @click="headerPointsClick">
|
||||
<image class="gold_icon"
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/401463152_31.png" mode="" />
|
||||
<text class="points">{{pointsNum}}</text>
|
||||
<u-icon color="#FFFFFF" name="arrow-right" />
|
||||
</view>
|
||||
<view class="tomorrow_sign">明日签到+1</view>
|
||||
</view>
|
||||
<view class="header_right">
|
||||
<image class="rigth_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/QIANDAO.png"
|
||||
mode="" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="main">
|
||||
<image class="center_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_311.png"
|
||||
mode="" />
|
||||
<view class="center_header">
|
||||
<view class="signed">本期已签到<text>{{checkedData}}</text>天</view>
|
||||
<view class="center_time">{{starteTime}}~{{endTime}}</view>
|
||||
</view>
|
||||
<view class="points_detail">
|
||||
<view class="day_detail" v-for="(item, index) in pointsList" :key="index" @click="headerSignClick">
|
||||
<view :class="['item', item.today && 'red_border']">
|
||||
<view v-if="item.isSign" :class="['points_time', !item.isSign && 'color_red']">{{item.time}}</view>
|
||||
<view v-if="!item.isSign" :class="['points_time', !item.isSign && 'color_red']">+{{item.points}}</view>
|
||||
<image class="points_icon" v-if="item.isSign"
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_518.png" mode="" />
|
||||
<image class="points_icon" wx:else
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/401463152_31.png" mode="" />
|
||||
</view>
|
||||
<view class="day_time">{{index +1}}天</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
request,
|
||||
menuButtonInfo,
|
||||
NavgateTo
|
||||
} from '../../../utils';
|
||||
import {
|
||||
apiArr
|
||||
} from '../../../api/user';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
top: 0,
|
||||
starteTime: '',
|
||||
endTime: '',
|
||||
points: [{
|
||||
time: '01.29',
|
||||
state: true,
|
||||
},
|
||||
{
|
||||
time: '+2',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+3',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+4',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+5',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+6',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+7',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+1',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+2',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+3',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+4',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+5',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+6',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+7',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+1',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+2',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+3',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+4',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+5',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+6',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+7',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+1',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+2',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+3',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+4',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+5',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+6',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+7',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+1',
|
||||
state: false,
|
||||
},
|
||||
{
|
||||
time: '+2',
|
||||
state: false,
|
||||
},
|
||||
],
|
||||
pointsList: [],
|
||||
checkedData: 0,
|
||||
pointsNum: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getIntegral() {
|
||||
const res = await request(apiArr.signIntegral, 'POST', {});
|
||||
this.pointsNum = res.integral
|
||||
},
|
||||
|
||||
async init() {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
mask: true,
|
||||
})
|
||||
this.getIntegral();
|
||||
const res = await request(apiArr.signCycle, 'POST', {});
|
||||
const {
|
||||
start_time,
|
||||
end_time,
|
||||
day_num
|
||||
} = res;
|
||||
const starteTime = start_time.substring(0, 10);
|
||||
const endTime = end_time.substring(0, 10);
|
||||
|
||||
|
||||
this.starteTime = starteTime;
|
||||
this.endTime = endTime;
|
||||
await this.getGridList(starteTime, day_num);
|
||||
await this.getSignList(starteTime, endTime, day_num);
|
||||
|
||||
uni.hideLoading();
|
||||
},
|
||||
|
||||
getGridList(startTime, dayNum) {
|
||||
// 获取当前日期
|
||||
const today = new Date();
|
||||
|
||||
const year = today.getFullYear();
|
||||
const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1
|
||||
const day = String(today.getDate()).padStart(2, '0');
|
||||
const todayString = `${year}-${month}-${day}`;
|
||||
|
||||
|
||||
// 将日期字符串转换为 Date 对象
|
||||
const startDate = new Date(startTime);
|
||||
|
||||
const dayList = Array.from({
|
||||
length: dayNum
|
||||
}, (_, index) => {
|
||||
// 创建一个新的 Date 对象,表示当前的天数
|
||||
const currentDate = new Date(startDate);
|
||||
currentDate.setDate(startDate.getDate() + index);
|
||||
|
||||
const currentDateString = currentDate.toISOString().split('T')[0]; // 格式化为 YYYY-MM-DD
|
||||
|
||||
|
||||
// 检查当前日期是否是今天
|
||||
const isToday = currentDateString === todayString;
|
||||
|
||||
// 格式化当前日期为 MM.DD
|
||||
const formattedDate = (`0${currentDate.getMonth() + 1}`).slice(-2) + '.' + (`0${currentDate.getDate()}`)
|
||||
.slice(-2);
|
||||
return {
|
||||
time: formattedDate,
|
||||
date: currentDateString,
|
||||
points: 1,
|
||||
today: isToday,
|
||||
}
|
||||
});
|
||||
this.pointsList = dayList;
|
||||
},
|
||||
|
||||
async getSignList(startTime, endTime, dayNum) {
|
||||
const res = await request(apiArr.signList, 'POST', {
|
||||
page_num: 1,
|
||||
page_size: dayNum,
|
||||
sign_date: [startTime, endTime]
|
||||
});
|
||||
const newRes = res.rows.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
day: item.day.substring(0, 10),
|
||||
}
|
||||
});
|
||||
const updatedList = this.pointsList.map(item => {
|
||||
// 使用 some 检查 已签到列表 中是否有匹配的日期
|
||||
const isSign = newRes.some(dayObj => dayObj.day === item.date);
|
||||
|
||||
// 返回一个新的对象,包含原始字段和已签到的 isSign 字段
|
||||
return {
|
||||
...item,
|
||||
isSign: isSign
|
||||
};
|
||||
});
|
||||
|
||||
this.checkedData = res.total;
|
||||
this.pointsList = updatedList;
|
||||
},
|
||||
|
||||
|
||||
headerPointsClick() {
|
||||
NavgateTo('/packages/user/points/index', { isLogin: false })
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
const meun = menuButtonInfo();
|
||||
this.top = meun.height + meun.top;
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
19
packages/user/resetPwd/constant.js
Normal file
19
packages/user/resetPwd/constant.js
Normal file
@ -0,0 +1,19 @@
|
||||
// 修改密码页面参数类型
|
||||
export const pageOptionType = {
|
||||
pay: {
|
||||
title: '已绑定手机号',
|
||||
defultDesc: '请输入绑定手机号',
|
||||
subTitle: '支付密码',
|
||||
defultSubDesc: '请输入支付密码',
|
||||
type: 'pay',
|
||||
btnText: '设置',
|
||||
},
|
||||
login: {
|
||||
title: '新设密码',
|
||||
defultDesc: '请输入新密码',
|
||||
subTitle: '确认密码',
|
||||
defultSubDesc: '请再次输入密码',
|
||||
type: 'login',
|
||||
btnText: '修改',
|
||||
}
|
||||
};
|
||||
38
packages/user/resetPwd/index.css
Normal file
38
packages/user/resetPwd/index.css
Normal file
@ -0,0 +1,38 @@
|
||||
.item{
|
||||
display:flex;
|
||||
border-bottom:1px solid #e6e6e6;
|
||||
height: 90rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 36rpx 50rpx 30rpx;
|
||||
}
|
||||
.item-title {
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
.input-desc {
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
text-align: right;
|
||||
}
|
||||
.tips {
|
||||
font-size: 24rpx;
|
||||
color: #222222;
|
||||
font-weight: 400;
|
||||
margin: 0 14rpx 40rpx 50rpx;
|
||||
}
|
||||
.desc {
|
||||
color: #FF512A;
|
||||
}
|
||||
.submit_reset {
|
||||
margin: 0 50rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
background: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
color: #FFFFFF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
}
|
||||
151
packages/user/resetPwd/index.vue
Normal file
151
packages/user/resetPwd/index.vue
Normal file
@ -0,0 +1,151 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="item">
|
||||
<view class="item-title">{{content.title}}</view>
|
||||
<!-- 修改支付密码输入框 -->
|
||||
<input v-if="content.type === 'pay'" class="input-desc" :value="cellPhone" type="number" maxlength="11" data-name='phone' @input="handerChangeClick" :placeholder='content.defultDesc' />
|
||||
|
||||
<!-- 修改登录密码输入框 -->
|
||||
<input v-if="content.type === 'login'" class="input-desc" password :value="cellPhone" data-name='phone' @input="handerChangeClick" :placeholder='content.defultDesc' />
|
||||
</view>
|
||||
|
||||
<view class="item">
|
||||
<view class="item-title">{{content.subTitle}}</view>
|
||||
<input class="input-desc" :value="passWord" data-name='pwd' password @input="handerChangeClick" :placeholder="content.defultSubDesc" />
|
||||
</view>
|
||||
<view class="tips">
|
||||
<text class="desc">提示:</text>
|
||||
如果您是微信登录的账户,请直接填写新密码,然后点击确认修改即可设置登录密码
|
||||
</view>
|
||||
|
||||
<!-- 修改支付密码禁用规则: 手机号不存在 或者 手机号不足11位 或者 密码不存在 则禁止点击 -->
|
||||
<button
|
||||
v-if="content.type === 'pay'"
|
||||
class="submit_reset"
|
||||
:disabled='!cellPhone || cellPhone.length !== 11 || !passWord'
|
||||
@click="handleSubmit"
|
||||
>
|
||||
确认{{content.btnText}}
|
||||
</button>
|
||||
<!-- 修改登录密码禁用规则:新密码不存在 或者 确认密码不存在 则禁止点击 -->
|
||||
<button
|
||||
v-if="content.type === 'login'"
|
||||
class="submit_reset"
|
||||
:disabled='!cellPhone || !passWord'
|
||||
@click="handleSubmit"
|
||||
>
|
||||
确认{{content.btnText}}
|
||||
</button>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request } from '../../../utils/index';
|
||||
import { pageOptionType } from './constant';
|
||||
import { apiArr } from '../../../api/user';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
cellPhone: null,
|
||||
passWord: null,
|
||||
type: '',
|
||||
content:{},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 修改输入框值
|
||||
handerChangeClick(event) {
|
||||
const {value} = event.detail;
|
||||
const {name} = event.currentTarget.dataset;
|
||||
if (name === 'phone') {
|
||||
this.cellPhone = value;
|
||||
};
|
||||
if (name === 'pwd') {
|
||||
this.passWord = value;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 提交修改
|
||||
async handleSubmit() {
|
||||
/**
|
||||
* 参数场景说明:
|
||||
* 修改登录密码页面时,cellPhone 是新设密码,passWord 是确认密码
|
||||
* 修改支付密码页面时,cellPhone 是已绑定手机号,passWord 是支付密码
|
||||
*/
|
||||
const {cellPhone, passWord, type} = this;
|
||||
|
||||
if (type === 'login') {
|
||||
if (cellPhone !== passWord) {
|
||||
uni.showToast({
|
||||
title: '新密码与确认密码不一致',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
return
|
||||
}
|
||||
const res = await request(apiArr.modifyPass, "POST", {
|
||||
new_password: cellPhone,
|
||||
conform_password: passWord,
|
||||
});
|
||||
|
||||
uni.showToast({
|
||||
title: '修改登录密码成功',
|
||||
icon: 'success',
|
||||
success () {
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}, 2000)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (type === 'pay') {
|
||||
const res = await request(apiArr.payPass, "POST", {
|
||||
mobile: cellPhone,
|
||||
pay_password: passWord,
|
||||
});
|
||||
|
||||
uni.showToast({
|
||||
title: '设置支付密码成功',
|
||||
icon: 'success',
|
||||
success () {
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}, 2000)
|
||||
}
|
||||
})
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
},
|
||||
onLoad(options) {
|
||||
// 基于父页面传递参数设置页面名称
|
||||
uni.setNavigationBarTitle({
|
||||
title: options.title
|
||||
});
|
||||
|
||||
// 根据父页面传递type参数映射页面渲染参数
|
||||
this.content = pageOptionType[options.type];
|
||||
this.type = options.type;
|
||||
},
|
||||
onShow() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
52
packages/user/share/index.css
Normal file
52
packages/user/share/index.css
Normal file
@ -0,0 +1,52 @@
|
||||
.container {
|
||||
width: 754rpx;
|
||||
height: 1334rpx;
|
||||
overflow-x: hidden;
|
||||
/* position: relative; */
|
||||
background: url('https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/Group_756.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.icon {
|
||||
width: 752rpx;
|
||||
height: 1334rpx;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.main {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 886rpx;
|
||||
z-index: 10;
|
||||
}
|
||||
.qrcode {
|
||||
width: 255rpx;
|
||||
height: 255rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.qrcode_pic {
|
||||
width: 255rpx;
|
||||
height: 255rpx;
|
||||
background: #D9D9D9;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.desc {
|
||||
margin-top: 32rpx;
|
||||
text-align: center;
|
||||
font-weight: 400;
|
||||
font-size: 26rpx;
|
||||
color: #000000;
|
||||
}
|
||||
.share_btn {
|
||||
margin-top: 39rpx;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.save {
|
||||
display: inline-flex;
|
||||
font-weight: 400;
|
||||
font-size: 36rpx;
|
||||
color: #FF512A;
|
||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||
border: 1rpx solid #FF512A;
|
||||
padding: 10rpx 70rpx;
|
||||
}
|
||||
156
packages/user/share/index.vue
Normal file
156
packages/user/share/index.vue
Normal file
@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="main">
|
||||
<view class="qrcode">
|
||||
<image class="qrcode_pic" :src="imagePath" mode="widthFix" />
|
||||
</view>
|
||||
<view class="desc">扫码体验小程序</view>
|
||||
<view class="share_btn">
|
||||
<view class="save" @click="headerQrcodeClick">保存二维码</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
picUrl,
|
||||
request
|
||||
} from '../../../utils';
|
||||
import {
|
||||
apiArr
|
||||
} from '../../../api/user';
|
||||
import permision from "../../../js_sdk/wa-permission/permission.js"
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
imagePath: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test_qrcode.jpg',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
const res = await request(apiArr.createQrcode, 'POST', {
|
||||
page: '/page/index/index',
|
||||
scene: `device=${wx.getStorageSync('device_id')}`
|
||||
});
|
||||
let img = picUrl + res.data;
|
||||
console.log('img', img)
|
||||
this.imagePath = img;
|
||||
},
|
||||
|
||||
headerQrcodeClick() {
|
||||
console.log('2');
|
||||
const that = this;
|
||||
uni.downloadFile({
|
||||
url: that.imagePath, // 网络图片地址
|
||||
success: async (res) => {
|
||||
console.log('11312312313', res);
|
||||
if (res.statusCode === 200) {
|
||||
const tempFilePath = res.tempFilePath; // 获取临时文件路径
|
||||
const systemInfo = uni.getSystemInfoSync();
|
||||
console.log('获取当前设备信息', systemInfo); //TODO: 代验证 ios 安卓是否可保存
|
||||
if (systemInfo.uniPlatform === 'mp-weixin') {
|
||||
// 2. 检查用户授权
|
||||
uni.getSetting({
|
||||
success(settingRes) {
|
||||
console.log('查询授权状态')
|
||||
if (!settingRes.authSetting['scope.writePhotosAlbum']) {
|
||||
// 未授权,请求授权
|
||||
uni.authorize({
|
||||
scope: 'scope.writePhotosAlbum',
|
||||
success() {
|
||||
// 授权成功,保存图片
|
||||
that.saveImageToAlbum(tempFilePath);
|
||||
},
|
||||
fail(err) {
|
||||
console.log('131111', err)
|
||||
// 授权失败,提示用户手动打开授权
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '需要授权保存图片到相册,请手动打开授权设置',
|
||||
success(modalRes) {
|
||||
if (modalRes.confirm) {
|
||||
uni.openSetting(); // 打开授权设置页面
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 已授权,保存图片
|
||||
that.saveImageToAlbum(tempFilePath);
|
||||
}
|
||||
},
|
||||
fail(err) {
|
||||
console.log('检查用户授权错误', err);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (systemInfo.osName === 'ios') {
|
||||
const result = await permision.judgeIosPermission("photoLibrary");
|
||||
if (result == 1) {
|
||||
// strStatus = "已获得授权"
|
||||
that.saveImageToAlbum(tempFilePath);
|
||||
} else if (result == 0) {
|
||||
// strStatus = "未获得授权"
|
||||
permision.gotoAppPermissionSetting()
|
||||
} else {
|
||||
// strStatus = "被永久拒绝权限";
|
||||
permision.gotoAppPermissionSetting()
|
||||
}
|
||||
}
|
||||
if (systemInfo.osName === 'android') {
|
||||
const res = await permision.requestAndroidPermission('android.permission.WRITE_EXTERNAL_STORAGE');
|
||||
if (result == 1) {
|
||||
// strStatus = "已获得授权"
|
||||
that.saveImageToAlbum(tempFilePath);
|
||||
} else if (result == 0) {
|
||||
// strStatus = "未获得授权"
|
||||
permision.gotoAppPermissionSetting()
|
||||
} else {
|
||||
// strStatus = "被永久拒绝权限"
|
||||
permision.gotoAppPermissionSetting()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
fail() {
|
||||
uni.showToast({
|
||||
title: '图片下载失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
saveImageToAlbum(tempFilePath) {
|
||||
uni.saveImageToPhotosAlbum({
|
||||
filePath: tempFilePath,
|
||||
success() {
|
||||
uni.showToast({
|
||||
title: '保存成功',
|
||||
icon: 'success'
|
||||
});
|
||||
},
|
||||
fail() {
|
||||
uni.showToast({
|
||||
title: '保存失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
// this.init();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
49
packages/user/uploadAvatar/index.css
Normal file
49
packages/user/uploadAvatar/index.css
Normal file
@ -0,0 +1,49 @@
|
||||
.upload {
|
||||
margin: 164rpx auto 58rpx;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
background: #F9F9F9;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
border: 1rpx solid #999999;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.upload_img {
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
}
|
||||
|
||||
.no_border {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.add {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 46rpx;
|
||||
height: 4rpx;
|
||||
background: #999999;
|
||||
}
|
||||
|
||||
.column {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 4rpx;
|
||||
height: 46rpx;
|
||||
background: #999999;
|
||||
}
|
||||
|
||||
.tips {
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.desc {
|
||||
color: #FF512A;
|
||||
}
|
||||
87
packages/user/uploadAvatar/index.vue
Normal file
87
packages/user/uploadAvatar/index.vue
Normal file
@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view :class="['upload', picUrl && 'no_border' ]" @click="headerUploadClick">
|
||||
|
||||
<view v-if="!picUrl">
|
||||
<view class="add"></view>
|
||||
<view class="column"></view>
|
||||
</view>
|
||||
|
||||
<image v-if="picUrl" class="upload_img" :src="picUrl" mode="" />
|
||||
</view>
|
||||
<view class="tips">
|
||||
<text class="desc">提示:</text>
|
||||
建议大小300*300像素的图片
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { request, upload, picUrl as imageUrl } from '../../../utils/index';
|
||||
import { apiArr } from '../../../api/user';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
picUrl: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
headerUploadClick() {
|
||||
let _this = this;
|
||||
wx.showLoading({
|
||||
title: '上传中',
|
||||
})
|
||||
uni.chooseMedia({
|
||||
count: 1,
|
||||
success(res) {
|
||||
console.log('123131', res);
|
||||
const tempFilePaths = res.tempFiles;
|
||||
|
||||
// 调用公共上传图片方法
|
||||
upload(tempFilePaths[0].tempFilePath,(res)=>{
|
||||
let datas = JSON.parse(res)
|
||||
console.log(datas.data);
|
||||
let url = imageUrl + datas.data.path
|
||||
_this.picUrl = url;
|
||||
|
||||
// 调用业务接口提交图片
|
||||
request(apiArr.avatar, "POST", {
|
||||
avatar: datas.data.path
|
||||
}, { silent: false, nested: true }).then((res) => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '上传头像成功',
|
||||
icon: 'success',
|
||||
mask: true,
|
||||
success() {
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
fail(err) {
|
||||
console.log('拉起上传图片失败', err);
|
||||
uni.hideLoading();
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
onShow() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
146
pages.json
146
pages.json
@ -3,8 +3,10 @@
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "uni-app",
|
||||
"navigationStyle": "custom"
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -14,17 +16,25 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/webview/webview",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText" : ""
|
||||
"path": "pages/shopcity/shopcity",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/shopcity/shopcity",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText" : ""
|
||||
"path": "pages/webview/webview",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -84,7 +94,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "community",
|
||||
"root": "packages/community",
|
||||
"pages": [{
|
||||
"path": "index/index",
|
||||
"style": {
|
||||
@ -154,6 +164,11 @@
|
||||
"style": {
|
||||
"navigationBarBackgroundColor": "#F9F9F9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "ownerList/index",
|
||||
"style": {
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -172,6 +187,115 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "packages/user",
|
||||
"pages": [{
|
||||
"path": "index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "账户信息",
|
||||
"navigationBarBackgroundColor": "#F9F9F9",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "uploadAvatar/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "上传头像",
|
||||
"navigationBarBackgroundColor": "#F9F9F9",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "resetPwd/index",
|
||||
"style": {
|
||||
"navigationBarBackgroundColor": "#F9F9F9",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "points/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "积分",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pointsSign/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pointsRule/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "积分规则",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "marketing/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "营销推广",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "share/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "packages/communityService",
|
||||
"pages": [
|
||||
{
|
||||
"path": "index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "社区服务",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "shopDetail/index",
|
||||
"style": {}
|
||||
},
|
||||
{
|
||||
"path": "serviceMore/index",
|
||||
"style": {}
|
||||
},
|
||||
{
|
||||
"path": "reservation/index",
|
||||
"style": {}
|
||||
},
|
||||
{
|
||||
"path": "reservationApply/index",
|
||||
"style": {
|
||||
"usingComponents": {
|
||||
"areaPopup": "/components/areaPopup/areaPopup"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
@ -41,7 +41,6 @@
|
||||
|
||||
<view class="cirList">
|
||||
<view :class="['cir', currentIdx == index ? 'active' : '']" v-for="(item, index) in bannerList" :key="index">
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -117,9 +116,10 @@
|
||||
<view class="empty" v-if="current != 0 && current != 1">
|
||||
<van-empty description="暂无内容" />
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<!-- <Footer /> -->
|
||||
</template>
|
||||
|
||||
|
||||
@ -141,8 +141,13 @@
|
||||
apiArr as apiArr2
|
||||
} from '../../api/doorToDoor.js'
|
||||
|
||||
import nav from '../../components/nav/nav'; //1.导入组件
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
nav
|
||||
}, //2.注册组件
|
||||
data() {
|
||||
return {
|
||||
s: uni.getSystemInfoSync().statusBarHeight, // 状态栏高度
|
||||
@ -223,49 +228,26 @@
|
||||
// name:"官方商城",
|
||||
// url:"/packages/official/index/index"
|
||||
// },
|
||||
]
|
||||
],
|
||||
title: 'Hello',
|
||||
currentCity: "",
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
meth1() {
|
||||
console.log(1);
|
||||
uni.navigateTo({
|
||||
url: '/kitchen/index/index',
|
||||
success: res => {},
|
||||
fail: () => {},
|
||||
complete: () => {}
|
||||
});
|
||||
},
|
||||
meth2() {
|
||||
console.log(2);
|
||||
uni.navigateTo({
|
||||
url: '/reservation/index/index',
|
||||
success: res => {},
|
||||
fail: () => {},
|
||||
complete: () => {}
|
||||
});
|
||||
},
|
||||
meth3() {
|
||||
NavgateTo('/pages/login/login', {
|
||||
isLogin: false
|
||||
})
|
||||
},
|
||||
meth4() {
|
||||
NavgateTo('/community/index/index', {
|
||||
isLogin: false
|
||||
})
|
||||
},
|
||||
meth5() {
|
||||
NavgateTo('/shopWrite/index/index', {
|
||||
isLogin: false
|
||||
})
|
||||
},
|
||||
meth6() {
|
||||
NavgateTo('/shopWrite/list/index', {
|
||||
isLogin: false
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
onShow() {
|
||||
|
||||
if (uni.getStorageSync('city')) {
|
||||
this.currentCity = {
|
||||
city: uni.getStorageSync('city')
|
||||
};
|
||||
} else {
|
||||
uni.setStorageSync('city', uni.getStorageSync('Usercity'))
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
swipers(e) {
|
||||
this.currentIdx = e.detail.current
|
||||
},
|
||||
@ -314,6 +296,9 @@
|
||||
} else {
|
||||
flag = false;
|
||||
}
|
||||
res.rows.forEach(item=>{
|
||||
item.pic = this.picUrl + item.pic
|
||||
})
|
||||
that.CommunityList = that.CommunityList.concat(res.rows || []);
|
||||
that.flag = flag;
|
||||
that.page_num = that.page_num + 1;
|
||||
|
||||
150
pages/user/index.css
Normal file
150
pages/user/index.css
Normal file
@ -0,0 +1,150 @@
|
||||
.conatiner {
|
||||
height: 100%;
|
||||
background: linear-gradient(to bottom, #FFE7E1, #FFFFFF);
|
||||
background-attachment: fixed;
|
||||
background-size: cover;
|
||||
padding-top: 20rpx;
|
||||
padding-bottom: 20%;
|
||||
}
|
||||
|
||||
/* 头部 */
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 25rpx;
|
||||
/* margin-top: 83rpx; */
|
||||
margin-bottom: 30rpx;
|
||||
pointer-events: none;
|
||||
}
|
||||
/* 头像 */
|
||||
.avatar-container {
|
||||
display: flex;
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
background-color: #FF7354;
|
||||
margin-right: 30rpx;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
pointer-events: auto;
|
||||
}
|
||||
/* 头像图片 */
|
||||
.avatar {
|
||||
/* width: 100%;
|
||||
height: 100%; */
|
||||
width: 73rpx;
|
||||
height: 69rpx;
|
||||
/* margin-bottom: 20rpx; */
|
||||
pointer-events: auto;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
}
|
||||
/* 登录/注册 */
|
||||
.login-btn {
|
||||
font-size: 36rpx;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.section {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 21rpx;
|
||||
}
|
||||
.order {
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
.nav_icon {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.grid-text {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
width: 48%;
|
||||
height: 150rpx;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 30rpx;
|
||||
justify-content: left;
|
||||
align-items: center;
|
||||
/* padding-left: 28rpx; */
|
||||
}
|
||||
|
||||
.item1 {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
width: 100%;
|
||||
height: 220rpx;
|
||||
background-color: #FFFFFF;
|
||||
align-items: center;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.item-owner {
|
||||
margin:0 116rpx 0 116rpx;
|
||||
}
|
||||
|
||||
.item-icon {
|
||||
width: 150rpx;
|
||||
height: 98rpx;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.item-icon1 {
|
||||
width: 150rpx;
|
||||
height: 120rpx;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.icon-img {
|
||||
display: flex;
|
||||
width: 72rpx;
|
||||
height: 72rpx;
|
||||
flex-direction: column;
|
||||
margin-bottom: 28rpx;
|
||||
margin-left: 17%;
|
||||
}
|
||||
|
||||
.item-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-left: 28rpx;
|
||||
}
|
||||
|
||||
.title-item {
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5rpx;
|
||||
}
|
||||
|
||||
.item-subtitle {
|
||||
font-size: 20rpx;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
margin-top: 29rpx;
|
||||
margin-left: 22rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
.uicon-volume {
|
||||
font-size: 28rpx !important;
|
||||
}
|
||||
.u-grid-item {
|
||||
margin-bottom: 43rpx;
|
||||
}
|
||||
333
pages/user/index.vue
Normal file
333
pages/user/index.vue
Normal file
@ -0,0 +1,333 @@
|
||||
<template>
|
||||
<view class="conatiner" :style="{paddingTop: top + 'px'}">
|
||||
<view class="header" @click="toLogin">
|
||||
<view class="avatar-container">
|
||||
<image class="avatar"
|
||||
:src="userInfo.userPic || 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_309.png'"
|
||||
mode="" />
|
||||
</view>
|
||||
<view class="login-btn">{{userInfo.user_name ? userInfo.user_name : '登录/注册'}}</view>
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
<view class="item" @click="handlePointsClick">
|
||||
<view class="item-content">
|
||||
<text class="item-title">积分</text>
|
||||
<text class="item-subtitle">我的剩余积分</text>
|
||||
</view>
|
||||
<image class="item-icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/5bf7d7dca1ff7_1.png">
|
||||
</image>
|
||||
</view>
|
||||
<view class="item" @click="handleSignClick">
|
||||
<view class="item-content">
|
||||
<text class="item-title">每日签到</text>
|
||||
<text class="item-subtitle">签到获取积分</text>
|
||||
</view>
|
||||
<image class="item-icon1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_311.png" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 我的社区、申请业主、我的设备 -->
|
||||
<view class="section">
|
||||
<view class="item1">
|
||||
<view class="item_device" @click="handleCommunityClick">
|
||||
<image class="icon-community icon-img"
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_16.png"></image>
|
||||
<text class="community-title title-item">我的社区</text>
|
||||
</view>
|
||||
<view class="item_device" @click="handleApplyOwnerClick">
|
||||
<image class="icon-owner icon-img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Frame.png" />
|
||||
<text class="owner-title title-item">申请业主</text>
|
||||
</view>
|
||||
<view class="item_device" @click="handleFacilityClick">
|
||||
<image class="icon-device icon-img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Frame_1.png"/>
|
||||
<text class="device-title title-item">我的设备</text>
|
||||
</view>
|
||||
<view class="item_device" @click="handleMeApplyClick">
|
||||
<image class="icon-device icon-img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_905.png"/>
|
||||
<text class="device-title title-item">我的申请</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- 我的订单 -->
|
||||
<view class="navigation">我的订单</view>
|
||||
<view class="order">
|
||||
<u-grid col="4" :border="false" >
|
||||
<u-grid-item @click="headerOrderClick(item)" v-for="(item, index) in order_List" :key="index">
|
||||
<image class="nav_icon" :src="item.image" mode=""></image>
|
||||
<text class="grid-text">{{item.name}}</text>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
|
||||
<!-- 功能服务 -->
|
||||
<view class="navigation">功能服务</view>
|
||||
<view class="order">
|
||||
<u-grid col="4" :border="false" >
|
||||
<u-grid-item @click="headerGridItemClick(item)" v-for="(item, index) in functional_List" :key="index">
|
||||
<image class="nav_icon" :src="item.image" mode=""></image>
|
||||
<text class="grid-text">{{item.name}}</text>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
|
||||
|
||||
<view v-if="!isShop">
|
||||
<view class="navigation">商家服务</view>
|
||||
<view class="order">
|
||||
<u-grid col="4" :border="false" >
|
||||
<u-grid-item @click="headerGridItemClick(item)" v-for="(item, index) in shopServer" :key="index">
|
||||
<image class="nav_icon" :src="item.image" mode=""></image>
|
||||
<text class="grid-text">{{item.name}}</text>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<nav-footer />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { apiArr } from '../../api/login';
|
||||
import { menuButtonInfo, NavgateTo, picUrl, request } from '../../utils/index';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
top: 0,
|
||||
order_List: [{
|
||||
image: "https://zhsq.hshuishang.com/Public/img/common/order12.png",
|
||||
name: "物业账单",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://zhsq.hshuishang.com/Public/img/common/order04.png",
|
||||
name: "社区服务",
|
||||
type: "h5",
|
||||
url: "/packages/communityService/index/index",
|
||||
},
|
||||
{
|
||||
image: "https://zhsq.hshuishang.com/Public/img/common/order11.png",
|
||||
name: "商家优惠",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://zhsq.hshuishang.com/Public/img/common/order08.png",
|
||||
name: "积分商城",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/orderIcon_1.png",
|
||||
name: "社区健康",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/orderIcon_2.png",
|
||||
name: "生活缴费",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/orderIcon_3.png",
|
||||
name: "社区商城",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/orderIcon_4.png",
|
||||
name: "周边商超",
|
||||
type: "h5",
|
||||
url: "",
|
||||
},
|
||||
|
||||
],
|
||||
functional_List: [{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_25.png",
|
||||
"name": "生活缴费",
|
||||
"url": "",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_26.png",
|
||||
"name": "优惠卡券",
|
||||
// "url": "/packages/user/coupon/index",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_35.png",
|
||||
"name": "我的卡券",
|
||||
"url": "",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_30.png",
|
||||
"name": "营销推广",
|
||||
"url": "/packages/user/marketing/index",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_27.png",
|
||||
"name": "个人设置",
|
||||
"url": "/packages/user/index/index",
|
||||
"type": "h5"
|
||||
},
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_29.png",
|
||||
"name": "平台客服",
|
||||
"url": "/packages/WaterPurifier/pages/Addfriend/Addfriend",
|
||||
"type": "h5"
|
||||
},
|
||||
|
||||
{
|
||||
"image": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/repairList.png",
|
||||
"name": "报修列表",
|
||||
"url": "/packages/OneRepair/pages/OwnerRepairList/OwnerRepairList",
|
||||
"type": "h5"
|
||||
},
|
||||
|
||||
],
|
||||
shopServer: [{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_774.png",
|
||||
name: "订单核销",
|
||||
type: "",
|
||||
url: "/shopWrite/index/index",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_774.png",
|
||||
name: "核销列表",
|
||||
type: "",
|
||||
url: "/shopWrite/list/index",
|
||||
},
|
||||
],
|
||||
userInfo: {},
|
||||
isShop: false,
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 头像点击
|
||||
toLogin() {
|
||||
NavgateTo('/packages/user/index/index', { isLogin: false });
|
||||
},
|
||||
|
||||
// 积分跳转
|
||||
handlePointsClick() {
|
||||
NavgateTo('/packages/user/points/index', { isLogin: false });
|
||||
},
|
||||
|
||||
// 每日签到跳转
|
||||
handleSignClick() {
|
||||
NavgateTo('/packages/user/pointsSign/index', { isLogin: false });
|
||||
},
|
||||
|
||||
// 我的社区跳转
|
||||
handleCommunityClick(){
|
||||
NavgateTo('/packages/community/index/index', { isLogin: false})
|
||||
},
|
||||
|
||||
// 申请业主跳转
|
||||
handleApplyOwnerClick(){
|
||||
NavgateTo(`/packages/community/index/index?types=2`, { isLogin: false})
|
||||
},
|
||||
|
||||
// 我的设备跳转
|
||||
handleFacilityClick() {
|
||||
this.NotOpen();
|
||||
},
|
||||
|
||||
// 我的申请跳转
|
||||
handleMeApplyClick() {
|
||||
NavgateTo(`/packages/community/ownerList/index`, { isLogin: false})
|
||||
},
|
||||
|
||||
// 我的订单跳转
|
||||
headerOrderClick(event) {
|
||||
console.log('123133131', event);
|
||||
if(!event.url) {
|
||||
this.NotOpen();
|
||||
return
|
||||
} else {
|
||||
if (!uni.getStorageSync('city')) {
|
||||
wx.showModal({
|
||||
title: '提示',
|
||||
content: '请先选择您的城市',
|
||||
confirmText:"去选择",
|
||||
complete: (res) => {
|
||||
if (res.cancel) {}
|
||||
if (res.confirm) {
|
||||
NavgateTo( '/pages/index/shopcity', {isLogin: false})
|
||||
}
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
console.log('选择城市');
|
||||
NavgateTo( `${event.url}`, {isLogin: false})
|
||||
}
|
||||
},
|
||||
|
||||
// 功能服务跳转
|
||||
headerGridItemClick(event) {
|
||||
if (!event.url) {
|
||||
this.NotOpen();
|
||||
return
|
||||
}
|
||||
// 如果点击为平台客服则允许跳转
|
||||
if (event.url === '/packages/WaterPurifier/pages/Addfriend/Addfriend') {
|
||||
NavgateTo( event.url, { isLogin: false})
|
||||
return;
|
||||
}
|
||||
if (event.url) {
|
||||
NavgateTo( event.url, { isLogin: false})
|
||||
}
|
||||
},
|
||||
|
||||
// 暂未开通服务弹窗
|
||||
NotOpen() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '此功能暂未开通!',
|
||||
showCancel: false,
|
||||
complete: (res) => {
|
||||
if (res.cancel) {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
return
|
||||
},
|
||||
|
||||
|
||||
async getUserInfo() {
|
||||
const isCtoken = uni.getStorageSync('ctoken');
|
||||
if (!isCtoken) return;
|
||||
const res = await request(apiArr.loginInfo, 'POST', {});
|
||||
const newUserInfo = {
|
||||
...res,
|
||||
userPic: res.img ? `${picUrl}${res.img}` : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/person/Group_309.png'
|
||||
};
|
||||
this.userInfo = newUserInfo;
|
||||
},
|
||||
|
||||
},
|
||||
onLoad() {
|
||||
const meun = menuButtonInfo();
|
||||
this.top = meun.height + meun.top;
|
||||
},
|
||||
|
||||
onShow() {
|
||||
console.log('111');
|
||||
this.getUserInfo();
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
28
project.config.json
Normal file
28
project.config.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"appid": "wx03cc6c9d66213d37",
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "3.8.3",
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
},
|
||||
"setting": {
|
||||
"coverView": true,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true,
|
||||
"enhance": true,
|
||||
"showShadowRootInWxmlPanel": true,
|
||||
"packNpmRelationList": [],
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
},
|
||||
"condition": {},
|
||||
"editorSetting": {
|
||||
"tabIndent": "insertSpaces",
|
||||
"tabSize": 2
|
||||
}
|
||||
}
|
||||
7
project.private.config.json
Normal file
7
project.private.config.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "uniapp-ZHSQ",
|
||||
"setting": {
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"kitchen/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './kitchen/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,gBAAI,CAAC,C","file":"kitchen/kitchen.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './kitchen/kitchen.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"kitchen/kitchen/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './kitchen/kitchen/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"kitchen/kitchen/index/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './kitchen/kitchen/index/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"reservation/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './reservation/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js",null,"webpack:///D:/projection/Hbuilder/uniapp-ZHSQ/reservation/index/index/index.vue?fdd0","webpack:///D:/projection/Hbuilder/uniapp-ZHSQ/reservation/index/index/index.vue?816f","webpack:///D:/projection/Hbuilder/uniapp-ZHSQ/reservation/index/index/index.vue?b627","uni-app:///kitchen/kitchen/index/index.vue"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","methods"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAkH;AAClH;AACyD;AACL;;;AAGpD;AAC8K;AAC9K,gBAAgB,6KAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,gFAAM;AACR,EAAE,yFAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,oFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACtBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAypB,CAAgB,+mBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;eCO7qB;EACAC;IACA,QAEA;EACA;EACAC,UAEA;AACA;AAAA,2B","file":"reservation/index/index/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './reservation/index/index/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=bf8d3a12&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"reservation/index/index/index.vue\"\nexport default component.exports","export * from \"-!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=bf8d3a12&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../下载目录/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"","<template>\n\t<view>\n\t\t\n\t</view>\n</template>\n\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\t\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\t\n\t\t}\n\t}\n</script>\n\n<style>\n\n</style>\n"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,aAAI,CAAC,C","file":"reservation/page1/page1.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './reservation/page1/page1.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,oBAAI,CAAC,C","file":"reservation/reservation.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './reservation/reservation.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"reservation/reservation/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './reservation/reservation/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"subPackages/kitchen/index/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/kitchen/index/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C","file":"subPackages/reservation/index/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/reservation/index/index.vue'\ncreatePage(Page)"],"sourceRoot":""}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
31
unpackage/dist/dev/mp-weixin/app.json
vendored
31
unpackage/dist/dev/mp-weixin/app.json
vendored
@ -2,8 +2,9 @@
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/login/login",
|
||||
"pages/shopcity/shopcity",
|
||||
"pages/webview/webview",
|
||||
"pages/shopcity/shopcity"
|
||||
"pages/user/index"
|
||||
],
|
||||
"subPackages": [
|
||||
{
|
||||
@ -24,7 +25,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "community",
|
||||
"root": "packages/community",
|
||||
"pages": [
|
||||
"index/index",
|
||||
"communityDetail/index",
|
||||
@ -36,7 +37,8 @@
|
||||
"repairList/index",
|
||||
"repairDetail/index",
|
||||
"chooseMsg/index",
|
||||
"addCar/index"
|
||||
"addCar/index",
|
||||
"ownerList/index"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -45,6 +47,29 @@
|
||||
"index/index",
|
||||
"list/index"
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "packages/user",
|
||||
"pages": [
|
||||
"index/index",
|
||||
"uploadAvatar/index",
|
||||
"resetPwd/index",
|
||||
"points/index",
|
||||
"pointsSign/index",
|
||||
"pointsRule/index",
|
||||
"marketing/index",
|
||||
"share/index"
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "packages/communityService",
|
||||
"pages": [
|
||||
"index/index",
|
||||
"shopDetail/index",
|
||||
"serviceMore/index",
|
||||
"reservation/index",
|
||||
"reservationApply/index"
|
||||
]
|
||||
}
|
||||
],
|
||||
"window": {
|
||||
|
||||
@ -286,4 +286,8 @@ image {
|
||||
height: 20rpx;
|
||||
background: #F9F9F9;
|
||||
}
|
||||
page{
|
||||
font-size: 28rpx;
|
||||
padding-bottom: 120rpx;
|
||||
}
|
||||
|
||||
|
||||
1110
unpackage/dist/dev/mp-weixin/common/vendor.js
vendored
1110
unpackage/dist/dev/mp-weixin/common/vendor.js
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user