提交 3c59529d authored 作者: 何忠建's avatar 何忠建

初始化、静态页面

上级
unpackage
\ No newline at end of file
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}
<script>
export default {
globalData: {
currentHouseVerify: false, // 当前小区是否认证
registerInfo: {
propertyName: '',
propertyCode: '',
platformName: '',
platformCode: '',
buildingId: '',
buildingName: '',
unitId: '',
unitName: '',
roomId: '',
roomName: '',
buildingStatus: '',
buildingType: '',
isDefault: 0,
relationShip: '',
residentName: '',
residentPhone: '',
sex: '',
certificateType: '',
certificateNo: ''
},
maintenanceInfo: {
repairAddress: '',
repairArticle: '',
repairTitle: '',
ownerPhone: '',
reservationTime: '',
repairDesc: '',
repairPhoto: ''
},
complaintInfo: {
complaintImg: "",
complaintTheme: "",
problemDesc: "",
userId: "",
userName: "",
userPhone: ""
}
},
onLaunch: function() {
//小程序自动更新
if (uni.canIUse('getUpdateManager')) {
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(res => {
// 请求完新版本信息的回调
if (res.hasUpdate) {
updateManager.onUpdateReady(() => {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: res => {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
updateManager.onUpdateFailed(() => {
// 新的版本下载失败
uni.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'
});
});
}
});
}
// let _this = this;
// wx.getSystemInfo({
// success: function(res) {
// let platform = res.platform
// _this.globalData.isMobieDevice = platform == "ios" || platform == "android" || platform == "devtools"
// }
// })
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
/*每个页面公共css */
@import '@/uni_modules/uni-scss/index.scss';
/* #ifndef APP-NVUE */
@import '@/static/customicons.css';
// 设置整个项目的背景色
page {
background-color: #ffffff;
}
/* #endif */
</style>
<template>
<view>
<uni-popup ref="authorization" background-color="#fff">
<view class="content-page" @touchmove="stopTouchMove">
<view class="img-box">
<image style="width: 100rpx; height: 100rpx;margin:22rpx;" mode="aspectFill" src="../static/images/logo.png"></image>
</view>
<view class="text">为了更完美的体验,请授权获取电话</view>
<button v-if="checked" class="login-btn" type="primary" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber" hover-class="none">手机号登录/注册</button>
<button v-else class="login-btn" type="primary" @click="verifyPolicy" hover-class="none">手机号登录/注册</button>
<view class="refuse" @click="refuse">取消</view>
<view class="policy-fixed">
<checkbox-group @change="changePolicy">
<label>
<view class="policy-box">
<checkbox value="true" :checked="checked" color="#1677FF" style="transform:scale(0.7)" />
<text class="text">我已阅读并同意</text>
<text class="policy" @click.stop="readAgreement">《用户服务协议》</text>
<text class="text"></text>
<text class="policy" @click.stop="readPolicy">《隐私政策》</text>
</view>
</label>
</checkbox-group>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import {
analysisMobileApi,
getPropertyLoginApi,
bindingUserInfoApi
} from "@/config/api.js"
export default {
data() {
return {
checked: false,
result: {}
}
},
watch: {
checked(newV) {
if(newV) {
let _this = this
wx.login({
success (res) {
if (res.code) {
_this.getCode(res.code)
}
}
})
}
}
},
methods: {
async getCode(code) {
let {result} = await getPropertyLoginApi({code}, {custom: {load: false}})
this.result = {...result}
},
onOpenLogin() {
this.$refs.authorization.open('center')
},
stopTouchMove() {
return false
},
refuse() {
this.$emit('refuse')
this.$refs.authorization.close()
uni.showToast({
icon: "none",
title: '您拒绝了授权,登录失败!'
})
},
verifyPolicy(e) {
if(!this.checked) {
uni.showToast({
title: '请先同意协议和政策',
icon: 'none'
});
return
}
},
//获取手机号
onGetPhoneNumber(e) {
let _this = this
if (e.detail.errMsg === "getPhoneNumber:fail user deny") { //用户决绝授权
//拒绝授权后弹出一些提示
uni.showModal({
content: '您拒绝了授权,登录失败!',
showCancel: false
})
} else { //允许授权
_this.getUserPhone(e)
}
},
// 获取手机号
async getUserPhone(e) {
let res = await analysisMobileApi({
code: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
sessionKey: this.result.sessionKey
})
if (res.code === 200 && res.result) {
uni.setStorageSync('openid', this.result.openid);
let data = JSON.parse(res.result)
uni.setStorageSync('user_phone', data.purePhoneNumber);
this.$emit('loginEnd')
this.$refs.authorization.close()
}
},
// 绑定用户
// async onbindingUserInfo(openId, phone) {
// let res = await bindingUserInfoApi({openId, phone})
// if(res.code === 200 && res.result) {
// uni.setStorageSync('openid', res.result.communityUser.openid);
// if(res.result.communityOwners && res.result.communityOwners.length) { // 业主
// this.$emit('loginEnd', true)
// } else if(res.result.employeeVos && res.result.employeeVos.comList.length) { // 维修员
// this.$emit('loginEnd', true)
// } else {
// this.$emit('loginEnd', false)
// }
// this.$refs.authorization.close()
// }
// },
changePolicy(e) {
this.checked = e.detail.value.length === 1
},
readPolicy() {
uni.navigateTo({
url: '/pages/policy/policy'
})
},
readAgreement() {
uni.navigateTo({
url: '/pages/policy/agreement'
})
}
}
}
</script>
<style lang="scss">
.content-page {
width: 100vw;
height: 100vh;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
.img-box {
width: 144rpx;
height: 144rpx;
border: 2rpx solid #E4E6E9;
border-radius: 50%;
margin-top: 200rpx;
}
.text {
font-size: 28rpx;
color: #3D3D3D;
line-height: 50rpx;
margin-top: 50rpx;
}
.login-btn {
width: 578rpx;
height: 80rpx;
line-height: 80rpx;
font-size: 28rpx;
color: #FFFFFF;
background: #6799F1;
border-radius: 200rpx;
margin-top: 72rpx;
}
.refuse {
font-size: 28rpx;
color: #767676;
line-height: 33rpx;
margin-top: 34rpx;
}
.policy-fixed {
position: fixed;
bottom: 160rpx;
left: 0;
right: 0;
z-index: 11;
.policy-box {
padding: 0 30rpx;
font-size: 14px;
vertical-align: middle;
.text {
color: #191A23;
vertical-align: middle;
}
.policy {
color: #1677FF;
vertical-align: middle;
}
}
}
}
</style>
<template>
<view class="nodate-box" v-if="show" :class="{'full': isFull}">
<image class="nodate" src="../../static/images/no-data.png" mode="aspectFill"></image>
<view class="text">{{text}}</view>
</view>
</template>
<script>
export default {
props: {
show: {
type: Boolean,
default: false
},
text: {
type: String,
default: '暂无数据'
},
isFull: {
type: Boolean,
default: true
}
},
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss">
.nodate-box {
display: flex;
flex-direction: column;
align-items: center;
background-color: #fff;
&.full {
// height: 100%;
height: 100vh;
.nodate {
margin-top: 280rpx;
width: 478rpx;
height: 322rpx;
}
.text {
margin-top: 50rpx;
}
}
.nodate {
width: 170rpx;
height: 127rpx;
}
.text {
font-size: 32rpx;
color: #191A23;
margin-top: 20rpx;
}
}
</style>
<template>
<checkbox-group @change="changePolicy">
<label>
<view class="policy-box">
<checkbox value="true" :checked="checked" color="#1677FF" style="transform:scale(0.8)" />
<text class="text">我已阅读并同意</text>
<text class="policy" @click.stop="readAgreement">《用户服务协议》</text>
<text class="text"></text>
<text class="policy" @click.stop="readPolicy">《隐私政策》</text>
</view>
</label>
</checkbox-group>
</template>
<script>
export default {
props: {
checked: {
type: Boolean,
default: false
}
},
methods: {
changePolicy(e) {
this.$emit('change', e.detail.value.length)
},
readPolicy() {
uni.navigateTo({
url: '/pages/policy/policy'
})
},
readAgreement() {
uni.navigateTo({
url: '/pages/policy/agreement'
})
}
}
}
</script>
<style lang="scss">
.policy-box {
padding: 0 30rpx;
font-size: 14px;
vertical-align: middle;
.text {
color: #191A23;
vertical-align: middle;
}
.policy {
color: #1677FF;
vertical-align: middle;
}
}
</style>
<template>
<view>
<uni-popup ref="userProfileShow" type="bottom" background-color="#fff">
<view class="userProfile-box">
<view class="title">获取你的昵称、头像</view>
<view class="describe">获取用户头像、昵称,主要用于向用户提供具有辨识度的用户中心界面</view>
<view class="form-box">
<view class="picture-box">
<text class="text">头像</text>
<button class="button" open-type="chooseAvatar" @chooseavatar="onChooseAvatar" hover-class="none">
<image class="avatar" :src="userForm.userAvatarUrl || 'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/lxLTJxnMqmF4536a26893262a4d66527a51bcab612c9_1687861702460.png'" mode="aspectFill"></image>
</button>
</view>
<view class="picture-box">
<text class="text">姓名</text>
<input class="input" type="nickname" v-model="userForm.nickname" @change="getNickname" placeholder="请输入昵称" maxlength="14" />
</view>
</view>
<view class="submit-box"><button :disabled="isDisabled" style="width: 200px" type="primary" @click="userSubmit">确认</button></view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
userForm: {
userAvatarUrl: '',
nickname: '',
isTmp: false
}
}
},
computed: {
isDisabled() {
return !this.userForm.userAvatarUrl || !this.userForm.nickname;
}
},
methods: {
onChooseAvatar(data) {
this.userForm.userAvatarUrl = data.detail.avatarUrl;
this.userForm.isTmp = true
},
getNickname(e) {
this.userForm.nickname = e.detail.value;
},
userSubmit() {
this.$refs.userProfileShow.close()
this.$emit('saveUserOk', this.userForm)
}
}
}
</script>
<style lang="scss" scoped>
.userProfile-box {
width: 100%;
padding: 20px 25px;
box-sizing: border-box;
.title {
font-size: 18px;
font-weight: bold;
color: #000;
}
.describe {
font-size: 14px;
color: #9c9c9c;
margin-top: 15px;
}
.form-box {
margin-top: 10px;
.picture-box {
width: 100%;
height: 74px;
display: flex;
align-items: center;
border-bottom: 1rpx solid #f1f1f1;
&:first-child {
border-top: 1rpx solid #f1f1f1;
}
.text {
font-size: 14px;
color: #000;
margin-right: 20px;
}
.button {
width: 54px;
height: 54px;
padding: 0;
margin: inherit;
&::after {
border: none;
}
.avatar {
width: 54px;
height: 54px;
border-radius: 5px;
}
}
.input {
height: 74px;
line-height: 74px;
}
}
}
.submit-box {
margin-top: 30px;
}
}
</style>
差异被折叠。
import Request from '@/utils/luch-request/luch-request/index.js'
import serverConfig from './server_config.js'
const http = new Request()
http.setConfig((config) => { /* config 为默认全局配置*/
config.baseURL = serverConfig.baseURL;
config.header = {
'Content-Type': 'application/json;charset=UTF-8'
}
return config
})
//请求前拦截
let loginPopupNum = 0;
http.interceptors.request.use((config) => { // 可使用async await 做异步操作
config.header = {
...config.header,
}
//获取存储的token
// const token = uni.getStorageSync('token');
// config.header['X-Token'] = token;
// 根据custom参数中配置的是否需要loading
if (config.custom.load) {
loginPopupNum ++
uni.showLoading({
title: '加载中...'
});
}
return config
}, config => { // 可使用async await 做异步操作
return Promise.reject(config)
})
// 请求后拦截器
http.interceptors.response.use((response) => {
setTimeout(()=> {
loginPopupNum --
if(loginPopupNum <= 0) {
uni.hideLoading();
}
}, 30)
if(Array.isArray(response.data) || response.data.success) {
return response.data
} else {
setTimeout(()=> {
uni.showToast({
title: response.data.message,
icon: 'none',
duration: 2000
})
}, 60)
return Promise.reject(response)
}
}, (response) => {
setTimeout(()=> {
loginPopupNum --
if(loginPopupNum <= 0) {
uni.hideLoading();
}
}, 30)
return Promise.reject(response)
})
export { http }
\ No newline at end of file
/***
* 接口参数
*/
const serverConfig = {
baseURL: "https://life.cloud.hjxbc.cn",
imageURL: "https://life.cloud.hjxbc.cn/sys/common/static/",
// baseURL: "http://192.168.0.100:9999",
// baseURL: "http://192.168.0.119:9999",
// baseURL: "http://220.203.25.212:9999", /* 根域名 */
// baseURL: "http://114.67.111.37:8001" /* 根域名 */
}
export default serverConfig
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title></title>
<!--preload-links-->
<!--app-context-->
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>
// #ifndef VUE3
import Vue from 'vue'
import App from './App'
let mixinLogin = require('@/utils/mixin-login.js');
Vue.mixin(mixinLogin);
// import store from './store' //引入vuex
// Vue.prototype.$store = store
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
import App from './App.vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif
\ No newline at end of file
{
"name" : "partners",
"appid" : "__UNI__F9C8B47",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
"app-plus" : {
/* 5+App特有相关 */
"usingComponents" : true,
"nvueCompiler" : "uni-app",
"nvueStyleCompiler" : "uni-app",
"modules" : {},
/* 模块配置 */
"distribute" : {
/* 应用发布信息 */
"android" : {
/* android打包配置 */
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
"ios" : {},
/* ios打包配置 */
"sdkConfigs" : {}
}
},
/* SDK配置 */
"quickapp" : {},
/* 快应用特有相关 */
"mp-weixin" : {
/* 小程序特有相关 */
"appid" : "wxd6dbda958bc122bd",
"setting" : {
"urlCheck" : false,
"minified" : true,
"postcss" : true,
"es6" : true
},
"usingComponents" : true
},
"vueVersion" : "2"
}
{
"pages": [{
"path": "pages/home/index",
"style": {
"navigationBarTitleText": "首页",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/index",
"style": {
"navigationBarTitleText": "个人中心"
}
},
{
"path": "pages/community/index",
"style": {
"navigationBarTitleText": "推广商铺",
"backgroundColor": "#ffffff"
}
},
{
"path": "pages/shopsList/index",
"style": {
"navigationBarTitleText": "选择商铺"
}
},
{
"path": "pages/shopsDetails/index",
"style": {
"navigationBarTitleText": "商铺详情"
}
},
{
"path": "pages/shopsCode/index",
"style": {
"navigationBarTitleText": "商铺二维码"
}
},
{
"path": "pages/myCommunityList/index",
"style": {
"navigationBarTitleText": "我的小区"
}
},
{
"path": "pages/myCommunityDetails/index",
"style": {
"navigationBarTitleText": "小区详情"
}
},
{
"path": "pages/withdrawalList/index",
"style": {
"navigationBarTitleText": "提现流水"
}
},
{
"path": "pages/reconciliationList/index",
"style": {
"navigationBarTitleText": "对账"
}
}, {
"path": "pages/reconciliationDetails/index",
"style": {
"navigationBarTitleText": "对账详情"
}
}, {
"path": "pages/reconciliationBring/index",
"style": {
"navigationBarTitleText": "申请对账"
}
},
{
"path": "pages/settlementList/index",
"style": {
"navigationBarTitleText": "结算"
}
},
{
"path": "pages/settlementApplyfor/index",
"style": {
"navigationBarTitleText": "申请结算"
}
},
{
"path": "pages/settlementDetails/index",
"style": {
"navigationBarTitleText": "结算详情"
}
},
{
"path": "pages/myInformation/index",
"style": {
"navigationBarTitleText": "个人信息",
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/policy/agreement",
"style": {
"navigationBarTitleText": "用户服务协议"
}
}, {
"path": "pages/policy/policy",
"style": {
"navigationBarTitleText": "隐私政策"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#FFFFFF",
"backgroundColor": "#ffffff",
"app-plus": {
"background": "#ffffff"
}
},
"tabBar": {
"color": "#A8ABE4",
"selectedColor": "#5159EA",
"borderStyle": "white",
"backgroundColor": "#FFFFFF",
"list": [{
"pagePath": "pages/home/index",
"text": "首页",
"iconPath": "static/tabbar/home.png",
"selectedIconPath": "static/tabbar/home_active.png"
},
{
"pagePath": "pages/mine/index",
"text": "个人中心",
"iconPath": "static/tabbar/mine.png",
"selectedIconPath": "static/tabbar/mine_active.png"
}
]
}
}
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="search">
<uni-search-bar placeholder="请输入小区名" bgColor="#EEEEEE" @confirm="search" @cancel="cancel" />
<view class="list">
<view class="item" :class="{'active': item.communityCode === currentHouseCode}" @click="onChangeHouse(item)" v-for="item in houseList" :key="item.communityCode">
{{item.communityName}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { getCompanyListApi } from '@/config/api.js'
let houseAllList = []
export default {
data() {
return {
houseList: [],
currentHouseCode: ''
}
},
methods: {
async getList() {
let {result} = await getCompanyListApi()
houseAllList = result
this.houseList = [...result]
},
onChangeHouse(item) {
uni.navigateTo({
url: '/pages/shopsList/index'
});
// getApp().globalData.registerInfo = {}
// // if(item.communityCode === this.currentHouseCode) return
// uni.setStorageSync('user_type', '1')
// uni.setStorageSync('property_code', item.platformCode)
// uni.setStorageSync('property_name', item.platformName)
// uni.setStorageSync('platform_code', item.communityCode)
// uni.setStorageSync('platform_name', item.communityName)
// uni.reLaunch({
// url: '/pages/home/index'
//})
},
search(value) {
this.houseList = houseAllList.filter(item=> {
return item.communityName.includes(value.value)
})
},
cancel() {
this.houseList = [...houseAllList]
}
},
onLoad() {
this.currentHouseCode = uni.getStorageSync('platform_code') || ''
let type = uni.getStorageSync('user_type')
if(type === '2') {
let data = uni.getStorageSync('user_house_list')
houseAllList = JSON.parse(data)
this.houseList = [...houseAllList]
} else {
this.getList()
}
}
}
</script>
<style lang="scss" scoped>
.page {
padding: 15rpx;
background-color: #ffffff;
}
.search {
.list {
padding:20rpx 30rpx;
.item {
font-size: 28rpx;
color: #373737;
height: 84rpx;
line-height: 84rpx;
border-bottom: 1px solid #F8F6F9;
&.active {
color: #6A59F2;
}
}
}
}
</style>
\ No newline at end of file
差异被折叠。
<template>
<view class="container" style="background-image: url('https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/bg_me1_1691046231385.png');">
<view class="page">
<view class="user">
<image
:src="userAvatar || 'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/lxLTJxnMqmF4536a26893262a4d66527a51bcab612c9_1687861702460.png'"
class="icon"></image>
<view class="name">林二</view>
<!-- <view class="name" v-else @click="quickEntry">请登录</view> -->
<view class="phone">15245214563</view>
<div class="information" @click="employeeEntry(1)">修改个人资料 ></div>
</view>
<view class="LogOut">退出登录</view>
</view>
<authorization-modal ref="authorization" @loginEnd="onLoginEnd" @refuse="onRefuse" />
</view>
</template>
<script>
import authorizationModal from '@/components/authorization.vue'
let timer = null
export default {
components: {
authorizationModal
},
data() {
return {
currentHouseVerify: false,
userType: '0',
userName: '',
userAvatar: '',
userPhone: '',
isEmployee: false
}
},
methods: {
quickEntry(type) {
let isLogin = uni.getStorageSync('openid')
if (!!isLogin) {
if (type == 7) {
const that = this
uni.showModal({
title: '提示',
content: '确认切换到业主吗?',
success: function(res) {
if (res.confirm) {
that.onChangeEmployee('1')
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
} else if (type == 8) {
const that = this
uni.showModal({
title: '提示',
content: '确认切换到维修员吗?',
success: function(res) {
if (res.confirm) {
that.onChangeEmployee('2')
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
} else {
let currentHouseVerify = getApp().globalData.currentHouseVerify
if (type == 2) {
let code = uni.getStorageSync('platform_code')
if (code) {
uni.navigateTo({
url: '/pages/myHouse/index',
});
} else {
uni.showToast({
icon: "none",
title: '暂未查到业主信息!'
})
}
return
}
if (!currentHouseVerify) {
uni.showToast({
icon: "none",
title: '暂未查到业主信息!'
})
// if(timer) clearTimeout(timer)
// timer = null
// timer = setTimeout(()=> {
// uni.navigateTo({
// url: '/pages/housing/index',
// });
// }, 1500)
// return
} else {
if (type == 1) {
uni.navigateTo({
url: '/pages/myInformation/index',
});
} else if (type == 3) {
uni.navigateTo({
url: '/pages/maintenance/index',
});
} else if (type == 4) {
uni.navigateTo({
url: '/pages/complaints/index',
});
} else if (type == 5) {
uni.navigateTo({
url: '/pages/myPaycost/index',
});
} else if (type == 6) {
uni.navigateTo({
url: '/pages/myReceipt/index',
});
} else {
return false
}
}
}
} else {
uni.hideTabBar()
this.$nextTick(() => {
this.$refs.authorization.onOpenLogin()
});
}
},
employeeEntry(type) {
if (type == 1) {
uni.navigateTo({
url: '/pages/myInformation/index',
});
} else {
uni.navigateTo({
url: '/pages/repairList/index',
});
}
},
onLoginEnd() {
uni.showTabBar()
uni.reLaunch({
url: '/pages/home/index'
})
},
onRefuse() {
uni.showTabBar()
},
onChangeEmployee(type) {
uni.setStorageSync('user_type', type)
uni.reLaunch({
url: '/pages/home/index'
})
}
},
onLoad() {
this.userType = uni.getStorageSync('user_type')
this.userName = uni.getStorageSync('user_name')
this.userAvatar = uni.getStorageSync('user_avatar')
this.userPhone = uni.getStorageSync('user_phone')
this.isEmployee = !!uni.getStorageSync('employee_code')
},
onHide() {
if (timer) clearTimeout(timer)
timer = null
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100vh;
background-position: top center;
background-repeat: no-repeat;
background-color: #F8F8FA;
background-size: cover;
display: flex;
align-items: center;
}
.page {
width: 100%;
box-sizing: border-box;
padding: 0 85rpx;
}
.LogOut{
background-color: #6A59F2;
width: 100%;
height: 80rpx;
line-height: 80rpx;
border-radius: 40rpx;
border: 1px solid #B5B8ED;
box-sizing: border-box;
font-size: 28rpx;
color: #FFFFFF;
font-weight: bold;
text-align: center;
margin-top: 60rpx;
}
.user {
background-color: #ffffff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 70rpx 30rpx;
.icon {
width: 160rpx;
height: 160rpx;
border-radius: 160rpx;
border:1px solid #6A59F2;
}
.name {
font-size: 36rpx;
color: #373737;
margin: 20rpx 0 10rpx;
}
.phone {
font-size: 28rpx;
color: #373737;
margin-bottom: 36rpx;
opacity: 0.55;
}
.information{
width: 300rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 30rpx;
border: 1px solid #B5B8ED;
font-size: 28rpx;
color: #6A59F2;
text-align: center;
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="community">
<view class="image">
<image
src="https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/8b9eaa6e92ad56895430be936cc03896_1690364063102.jpg"
class="icon"></image>
</view>
<view class="details">
<view class="content">
<view class="item">
<view class="name">小区名称</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="item">
<view class="name">占地面积</view>
<view class="detail">123㎡</view>
</view>
<view class="item">
<view class="name">楼栋数</view>
<view class="detail">12</view>
</view>
<view class="item">
<view class="name">业主数量</view>
<view class="detail">110</view>
</view>
<view class="item">
<view class="name">商铺数量</view>
<view class="detail">20</view>
</view>
<view class="item">
<view class="name">联系人</view>
<view class="detail">张三</view>
</view>
<view class="item">
<view class="name">联系人电话</view>
<view class="detail">13012341231</view>
</view>
<view class="item text">
<view class="name">详细地址</view>
<view class="detail">湖北省十堰市郧阳区汉江之星 小区B栋201</view>
</view>
</view>
</view>
<!-- <view class="form-submit" @click="onSubmit">解绑</view> -->
</view>
</view>
</view>
</template>
<script>
import {
getCommunityRepairDetailApi,
editCommunityRepairApi
} from '@/config/api.js'
export default {
data() {
return {
rateValue: 5,
evaluation: '',
formModel: {
},
imageList: [
'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/8b9eaa6e92ad56895430be936cc03896_1690364063102.jpg'
]
}
},
methods: {
async getDetail(id) {
// let {
// result
// } = await getCommunityRepairDetailApi({
// id
// })
// this.formModel = {
// ...result
// }
// this.imageList = result.repairPhoto ? result.repairPhoto.split(',') : []
},
async onSubmit() {
// await editCommunityRepairApi({
// id: this.formModel.id,
// repairEvaluate: this.evaluation,
// evaluateCount: this.rateValue
// })
// uni.$emit('change-maintenance');
// setTimeout(() => {
// uni.showToast({
// title: '评价成功!',
// icon: 'none'
// });
// setTimeout(() => {
// uni.navigateBack({
// delta: 2
// });
// }, 1500)
// }, 30)
},
},
onLoad(option) {
this.getDetail(option.id)
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0;
}
.community {
padding-bottom: 30rpx;
.image {
position: relative;
.icon {
width: 100%;
height: 420rpx;
}
}
.details {
position: absolute;
top: 370rpx;
margin: 0 30rpx;
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
.content {
.item {
display: flex;
height: 70rpx;
line-height: 70rpx;
.name {
width: 35%;
font-size: 28rpx;
color: #B6B6BA;
}
.detail {
width: 65%;
font-size: 28rpx;
color: #373737;
}
}
.text {
height: auto;
margin-bottom: 20rpx;
.detail {
line-height: 52rpx;
}
.image {
display: flex;
.icon {
width: 120rpx;
height: 120rpx;
border-radius: 10rpx;
margin-right: 10rpx;
}
}
}
}
}
}
.form-submit {
height: 80rpx;
line-height: 80rpx;
background-color: #6A59F2;
border-radius: 80rpx;
width: 100%;
text-align: center;
font-size: 28rpx;
color: #FFFFFF;
margin-bottom: 30rpx;
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="community">
<view class="search">
<uni-search-bar placeholder="请输入小区名" bgColor="#ffffff" radius="100" @confirm="search"
@cancel="cancel" />
</view>
<view class="list" v-if="allList.length">
<view class="item" :class="{'noRead' : item.readStatus === '2'}" v-for="item in allList" :key="item.id"
@click="toDetails(1)">
<image mode="aspectFill" :src="item.image" class="icon"></image>
<view class="con">
<view class="name">{{item.title}}</view>
<view class="add">
<image mode="aspectFill" src="../../static/images/icon_adress.png" class="icon"></image>
{{item.card}}
</view>
</view>
</view>
</view>
<no-data :show="allList.length === 0" text="暂无数据"></no-data>
</view>
</view>
</template>
<script>
import {
queryNoticePageApi
} from '@/config/api.js'
import serverConfig from '@/config/server_config.js';
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
activeStatus: '',
allPageNo: 1,
yesPageNo: 1,
notPageNo: 1,
allList: [{
id: 1,
image: 'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/8b9eaa6e92ad56895430be936cc03896_1690364063102.jpg',
title: '汉江之星小区',
card: '湖北省十堰市郧阳区汉江之星小区B栋201',
},{
id: 2,
image: 'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/bg_1690786506694.png',
title: '阳光花园小区',
card: '湖北省十堰市郧阳区阳光花园小区21号楼',
}],
}
},
computed: {},
methods: {
async getList() {
},
toDetails(id) {
uni.navigateTo({
url: `/pages/myCommunityDetails/index?id=${id}`
});
},
},
onShow() {
//this.getList()
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
.community .uni-searchbar {
padding: 0;
}
</style>
<style lang="scss" scoped>
.page {
padding: 30rpx 0 0;
}
.community {
border-radius: 16rpx;
.search {
margin: 30rpx 30rpx 0;
}
.list {
background-color: #F8F6F9;
padding: 30rpx;
.item {
background-color: #ffffff;
border-radius: 12rpx;
padding: 0;
margin-bottom: 30rpx;
box-shadow: 0 0 25rpx 0 rgba(81, 89, 234, 0.06);
position: relative;
&::after {
content: " ";
position: absolute;
top: 30rpx;
right: 30rpx;
width: 14rpx;
height: 14rpx;
border-radius: 50%;
z-index: 11;
}
&.noRead::after {
background-color: #F6C864;
;
}
.icon {
flex: none;
width: 100%;
height: 388rpx;
border-top-left-radius: 12rpx;
border-top-right-radius: 12rpx;
}
.con {
padding: 30rpx;
.name {
font-size: 34rpx;
color: #373737;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
/* 追加这一行代码 */
}
.add {
margin-top: 20rpx;
font-size: 28rpx;
color: #9D9CA6;
height: 30rpx;
line-height: 30rpx;
display: flex;
.icon {
width: 19rpx;
height: 24rpx;
margin-right: 10rpx;
}
}
}
}
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="information">
<view class="form">
<uni-forms>
<view class="form-item" @click="onOpenAvatar">
<view class="form-item-fl">
头像
</view>
<view class="form-item-fr">
<image :src="formData.avatar || 'https://life.cloud.hjxbc.cn/sys/common/static/scott/pic/lxLTJxnMqmF4536a26893262a4d66527a51bcab612c9_1687861702460.png'" class="icon"></image>
<uni-icons type="forward" color="#E4E4EA"></uni-icons>
</view>
</view>
<view class="form-item" @click="onOpenAvatar">
<view class="form-item-fl">
姓名
</view>
<view class="form-item-fr">
<view class="form-item-tit">{{formData.residentName}}</view>
<!-- <input class="form-item-tit" v-model="formData.residentName" focus placeholder="请输入姓名" /> -->
</view>
</view>
<view class="form-item">
<view class="form-item-fl">
性别
</view>
<view class="form-item-fr">
<uni-data-checkbox v-model="formData.sex" :localdata="sexs" class="form-item-tit" />
</view>
</view>
<view class="form-item">
<view class="form-item-fl">
年龄
</view>
<view class="form-item-fr">
<input class="form-item-tit" v-model="formData.age" focus placeholder="请输入年龄" />
</view>
</view>
<view class="form-item">
<view class="form-item-fl">
<view class="asterisk">*</view>手机号码
</view>
<view class="form-item-fr">
<view class="form-item-tit">{{formData.residentPhone}}</view>
</view>
</view>
<view class="form-item">
<view class="form-item-fl">
地址
</view>
<view class="form-item-fr">
<view class="form-item-tit">{{formData.address}}</view>
</view>
</view><strong></strong>
</uni-forms>
</view>
<view class="form-submit" @click="onSaveInfo">保存</view>
</view>
</view>
<user-vatar ref="userVatar" @saveUserOk="saveUserOk" />
</view>
</template>
<script>
import userVatar from '@/components/user-vatar.vue';
import {
uploadFile,
getUserInfoApi,
editOwnerApi
} from '@/config/api.js'
import serverConfig from "@/config/server_config.js";
export default {
components: {
userVatar
},
data() {
return {
formData: {
avatar: '',
temAvatar: '',
residentName: '',
sex: '',
age: '',
address: '',
residentPhone: '',
platformCode: ''
},
sexs: [
{ text: '男', value: 1 },
{ text: '女', value: 2 }
],
hasTmp: false
}
},
methods: {
async getUserInfo() {
let userType = uni.getStorageSync('user_type')
let {result} = await getUserInfoApi({userType})
if(userType === '1') {
let avatar = result.avatar ? `${serverConfig.imageURL}${result.avatar}` : ''
this.formData = {
avatar,
temAvatar: result.avatar,
residentName: result.residentName,
sex: result.sex,
age: result.age,
residentPhone: result.residentPhone,
address: result.platformName,
platformCode: result.platformCode
}
} else {
let avatar = result.employeeAvatar ? `${serverConfig.imageURL}${result.employeeAvatar}` : ''
this.formData = {
avatar,
temAvatar: result.employeeAvatar,
residentName: result.employeeName,
sex: result.sex,
age: result.age,
residentPhone: result.employeePhone,
address: result.platformName,
platformCode: result.platformCode
}
}
},
onOpenAvatar() {
this.$refs.userVatar.userForm.userAvatarUrl = this.formData.avatar
this.$refs.userVatar.userForm.nickname = this.formData.residentName
this.$nextTick(()=> {
this.$refs.userVatar.$refs.userProfileShow.open()
})
},
saveUserOk(form) {
this.formData.avatar = form.userAvatarUrl
this.formData.residentName = form.nickname
this.hasTmp = form.isTmp
},
async onSaveInfo() {
let uploadImg = ''
if(this.hasTmp) {
let {message} = await uploadFile({
filePath: this.formData.avatar,
name: 'file',
formData: { //其他需要携带的参数
'biz': 'scott/pic'
}
})
uploadImg = message
}
let avatar = uploadImg || this.formData.temAvatar
let userType = uni.getStorageSync('user_type')
await editOwnerApi({
avatar,
residentName: this.formData.residentName,
sex: this.formData.sex,
age: this.formData.age,
residentPhone: this.formData.residentPhone,
platformCode: this.formData.platformCode,
userType
})
let user_avatar = avatar ? `${serverConfig.imageURL}${avatar}` : ''
uni.setStorageSync('user_avatar', user_avatar)
uni.setStorageSync('user_name', this.formData.residentName)
var pages = getCurrentPages();
var page = pages[pages.length - 2];
page.$vm.userAvatar = user_avatar
page.$vm.userName = this.formData.residentName
setTimeout(()=> {
uni.showToast({
title: '保存成功!',
icon: 'none'
});
setTimeout(()=> {
uni.navigateBack()
}, 1500)
}, 30)
}
},
onLoad() {
this.getUserInfo()
}
}
</script>
<style lang="scss" scoped>
.page {
padding: 30rpx;
}
.information {
.form {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.form-item {
display: flex;
align-items: center;
justify-content: space-between;
height: 84rpx;
line-height: 84rpx;
border-bottom: 1px solid #F8F6F9;
overflow: hidden;
}
.form-item-fl {
font-size: 28rpx;
color: #373737;
display: flex;
.asterisk {
color: #F42E2E;
width: 10rpx;
margin-right: 6rpx;
}
}
.form-item-fr {
display: flex;
flex: 2;
align-items: center;
justify-content: flex-end;
margin-left: 20rpx;
.icon {
height: 64rpx;
width: 64rpx;
margin-right: 20rpx;
}
}
.form-item-tit {
font-size: 28rpx;
color: #666;
margin-right: 20rpx;
text-align: right;
}
}
}
.form-submit {
height: 80rpx;
line-height: 80rpx;
background-color: #6A59F2;
border-radius: 80rpx;
width: 100%;
text-align: center;
font-size: 28rpx;
color: #FFFFFF;
}
</style>
\ No newline at end of file
差异被折叠。
差异被折叠。
<template>
<view class="container">
<view class="page">
<view class="reconciliation">
<view class="list">
<view class="item" v-for="item in payList" :key="item.id" @click="toDetail(item.id)">
<view class="title">
<view class="name">CX312314141241</view>
<view class="tag">待对账</view>
</view>
<view class="content">
<view class="text">
<view class="name">用户账号</view>
<view class="detail">18888889999</view>
</view>
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name"> 订单时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
<view class="belongs-to">
<view class="text">
<view class="name">所属小区</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="text">
<view class="name">所属物业</view>
<view class="detail">汉江之星物业公司</view>
</view>
</view>
</view>
</view>
<view class="form" :show="payList.length > 0">
<uni-forms>
<view class="form-item-text">
<view class="title">备注</view>
<view class="textarea-box">
<textarea class="textarea" :maxlength="200" placeholder-style="font-size:14px"
v-model="formData.repairDesc" auto-height placeholder="请输入备注" />
</view>
</view>
</uni-forms>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
<view class="submit-box">
<view class="left">
<view class="amount">¥50000</view>
<view class="time">2023-11-21 至 2024-04-31</view>
</view>
<view class="right"><button class="form-submit">确定</button></view>
</view>
</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
formData: {},
payList: [{}, {}]
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
bindPickerChange(e, type) {
if (type === 'paymentType') {
this.paymentTypeIndex = Number(e.detail.value)
} else if (type === 'bankCard') {
this.bankCardIndex = Number(e.detail.value)
}
},
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0 0 90rpx;
background-color: #F8F6F9;
}
.reconciliation {
padding: 30rpx;
margin-bottom: 60rpx;
.form {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.form-item {
display: flex;
align-items: center;
justify-content: space-between;
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #F8F6F9;
overflow: hidden;
}
.form-item-fl {
font-size: 30rpx;
color: #373737;
display: flex;
.asterisk {
color: #F42E2E;
width: 10rpx;
margin-right: 6rpx;
}
}
.form-item-fr {
display: flex;
flex: 2;
align-items: center;
justify-content: flex-end;
margin-left: 20rpx;
}
.form-item-tit {
font-size: 30rpx;
color: #666;
margin-right: 20rpx;
text-align: right;
}
.form-item-text {
.title {
height: 100rpx;
line-height: 100rpx;
font-size: 30rpx;
color: #373737;
margin-left: 10rpx;
}
.textarea-box {
background-color: #F8F8F8;
border-radius: 5px;
.textarea {
font-size: 30rpx;
width: 100%;
min-height: 200rpx;
padding: 20rpx;
box-sizing: border-box;
}
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
margin-right: 20rpx;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
color: #6A59F2;
background-color: #F5F4FF;
border: 1px solid #6A59F2;
border-radius: 36rpx;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
.belongs-to {
padding: 30rpx;
background-color: #F8F6F9;
display: flex;
border-radius: 16rpx;
margin-top: 20rpx;
.text {
width: 100%;
text-align: center;
.name {
font-size: 28rpx;
color: #B6B6BA;
margin-bottom: 10rpx;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
.submit-box {
padding: 30rpx;
background: #ffffff;
position: fixed;
width: 100%;
box-sizing: border-box;
bottom: 0;
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid #F5F4FF;
.left {
.amount {
font-size: 40rpx;
color: #6A59F2;
font-weight: bold;
}
.time {
font-size: 28rpx;
color: #9D9CA6;
margin-top: 10rpx;
}
}
.right {
.form-submit {
height: 80rpx;
line-height: 80rpx;
background-color: #6A59F2;
border-radius: 80rpx;
width: 240rpx;
text-align: center;
font-size: 28rpx;
color: #FFFFFF;
}
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="settlement">
<view class="details">
<view class="item">
<view class="name">对账总金额 </view>
<view class="detail amount">¥5000.00</view>
</view>
<view class="item">
<view class="name">对账审核状态</view>
<view class="detail">审核通过</view>
</view>
<view class="item">
<view class="name">对账日期</view>
<view class="detail">2021-11-21 13:00</view>
</view>
<view class="item text">
<view class="name">备注</view>
<view class="detail"></view>
</view>
</view>
<view class="list">
<view class="item" v-for="item in payList" :key="item.id" @click="toDetail(item.id)">
<view class="title">
<view class="name">CX312314141241</view>
<view class="tag">已对账</view>
</view>
<view class="content">
<view class="text">
<view class="name">用户账号</view>
<view class="detail">18888889999</view>
</view>
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name"> 订单时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
<view class="belongs-to">
<view class="text">
<view class="name">所属小区</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="text">
<view class="name">所属物业</view>
<view class="detail">汉江之星物业公司</view>
</view>
</view>
</view>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
formData: {},
paymentTypeList: [{
label: '转账',
value: '1'
}],
paymentTypeIndex: 0,
bankCardList: [{
label: '工行1234567890',
value: '1'
}],
bankCardIndex: 0,
payList: [{}, {}]
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
bindPickerChange(e, type) {
if (type === 'paymentType') {
this.paymentTypeIndex = Number(e.detail.value)
} else if (type === 'bankCard') {
this.bankCardIndex = Number(e.detail.value)
}
},
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0;
background-color: #F8F6F9;
}
.settlement {
padding: 30rpx;
.details {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.item {
width: 100%;
display: flex;
justify-content: space-between;
height: 60rpx;
line-height: 60rpx;
.name {
width: 35%;
font-size: 28rpx;
color: #B6B6BA;
}
.detail {
width: 65%;
font-size: 28rpx;
color: #373737;
text-align: right;
}
.amount{
font-size: 40rpx;
color: #6A59F2;
font-weight: bold;
}
}
.text {
height: auto;
.detail {
line-height: 52rpx;
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
color: #B6B6BA;
background-color: #F8F8F8;
border: 1px solid #B6B6BA;
border-radius: 36rpx;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
.belongs-to {
padding: 30rpx;
background-color: #F8F6F9;
display: flex;
border-radius: 16rpx;
margin-top: 20rpx;
.text {
width: 100%;
text-align: center;
.name {
font-size: 28rpx;
color: #B6B6BA;
margin-bottom: 10rpx;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="search">
<uni-search-bar placeholder="请输入单号" bgColor="#F8F6F9" radius="100" @confirm="search" @cancel="cancel" />
</view>
<view class="reconciliation">
<view class="top">
<view class="tab">
<view :class="active == 1?'tit on':'tit'" @click="toWwitch(1)">待对账<view class="num">3</view>
</view>
<view :class="active == 2?'tit on':'tit'" @click="toWwitch(2)">已对账</view>
<view :class="active == 3?'tit on':'tit'" @click="toWwitch(3)">对账待审核</view>
<view :class="active == 4?'tit on':'tit'" @click="toWwitch(4)">对账驳回</view>
</view>
</view>
<view class="list">
<checkbox-group @change="checkboxChange">
<view class="item" v-for="(item,index) in payList" :key="item.id">
<view class="title">
<view class="title-l">
<view class="name" @click="toDetail(item.id)">CX312314141241</view>
<view :class="active == 1?'tag purple':'tag gray'">待对账</view>
</view>
<checkbox :value="index" color="#6A59F2" :checked="item.checked" v-if="active == 1" />
</view>
<view class="content">
<view class="text">
<view class="name">用户账号</view>
<view class="detail">1521542****</view>
</view>
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name">订单时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
<view class="belongs-to">
<view class="text">
<view class="name">所属小区</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="text">
<view class="name">所属物业</view>
<view class="detail">汉江之星物业公司</view>
</view>
</view>
</view>
</checkbox-group>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
</view>
<view class="form-submit" @click="onSubmit" v-if="active == 1">申请对账</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
active: 1,
payList: [{}, {}, {}, {}],
checkboxList: []
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
toWwitch(type) {
this.active = type;
},
toDetail(id) {
uni.navigateTo({
url: `/pages/reconciliationDetails/index?id=${id}`,
});
},
checkboxChange: function(e) {
this.checkboxList = e.detail.value;
},
onSubmit() {
console.log(this.checkboxList)
if (this.checkboxList.length > 0) {
uni.navigateTo({
url: `/pages/reconciliationBring/index?ids=${this.checkboxList}`,
});
} else {
uni.showToast({
title: '请选择对账单!',
icon: 'none'
});
}
}
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0 0 90rpx;
background-color: #F8F6F9;
}
.search {
background-color: #ffffff;
}
.reconciliation {
padding: 30rpx;
.top {
border-radius: 40rpx;
background-color: #FFFFFF;
margin-bottom: 30rpx;
.tab {
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
padding: 0 10rpx;
.tit {
width: 25%;
height: 60rpx;
line-height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
color: #373737;
text-align: center;
.num {
height: 28rpx;
line-height: 28rpx;
padding: 0 10rpx;
border-radius: 14rpx;
background-color: #F6C864;
font-size: 24rpx;
color: #ffffff;
margin-left: 6rpx;
}
}
.on {
border-radius: 30rpx;
background-color: #6A59F2;
color: #ffffff;
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.title-l {
display: flex;
}
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
margin-right: 20rpx;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
border-radius: 36rpx;
}
.purple {
color: #6A59F2;
background-color: #F5F4FF;
border: 1px solid #6A59F2;
}
.gray {
color: #B6B6BA;
background-color: #F8F8F8;
border: 1px solid #B6B6BA;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
.belongs-to {
padding: 25rpx;
background-color: #F8F6F9;
display: flex;
border-radius: 16rpx;
margin-top: 20rpx;
.text {
width: 100%;
text-align: center;
.name {
font-size: 28rpx;
color: #B6B6BA;
margin-bottom: 10rpx;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
.form-submit {
position: fixed;
bottom: 10rpx;
height: 80rpx;
line-height: 80rpx;
background-color: #6A59F2;
border-radius: 80rpx;
width: 100%;
text-align: center;
font-size: 28rpx;
color: #FFFFFF;
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="settlement">
<view class="form">
<uni-forms>
<view class="form-item">
<view class="form-item-fl">
<view class="asterisk"></view>结算方式
</view>
<view class="form-item-fr">
<picker style="width:100%;text-align:right;"
@change="e=>bindPickerChange(e, 'paymentType')" range-key="label"
:value="paymentTypeIndex" :range="paymentTypeList" class="form-item-tit">
<view class="uni-input">{{paymentTypeList[paymentTypeIndex].label}}</view>
</picker>
<uni-icons type="forward" color="#E4E4EA"></uni-icons>
</view>
</view>
<view class="form-item">
<view class="form-item-fl">
<view class="asterisk"></view>选择银行卡
</view>
<view class="form-item-fr">
<picker style="width:100%;text-align:right;"
@change="e=>bindPickerChange(e, 'bankCard')" range-key="label"
:value="bankCardIndex" :range="bankCardList" class="form-item-tit">
<view class="uni-input">{{bankCardList[bankCardIndex].label}}</view>
</picker>
<uni-icons type="forward" color="#E4E4EA"></uni-icons>
</view>
</view>
<view class="form-item-text">
<view class="title">备注</view>
<view class="textarea-box">
<textarea class="textarea" :maxlength="200" placeholder-style="font-size:14px"
v-model="formData.repairDesc" auto-height placeholder="请输入备注" />
</view>
</view>
</uni-forms>
</view>
<view class="list">
<view class="item" v-for="item in payList" :key="item.id" @click="toDetail(item.id)">
<view class="title">
<view class="name">CX312314141241</view>
<view class="tag">已对账</view>
</view>
<view class="content">
<view class="text">
<view class="name">用户账号</view>
<view class="detail">18888889999</view>
</view>
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name"> 订单时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
<view class="belongs-to">
<view class="text">
<view class="name">所属小区</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="text">
<view class="name">所属物业</view>
<view class="detail">汉江之星物业公司</view>
</view>
</view>
</view>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
<view class="submit-box">
<view class="left">
<view class="amount">¥50000</view>
<view class="time">2023-11-21 至 2024-04-31</view>
</view>
<view class="right"><button class="form-submit">确定</button></view>
</view>
</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
formData: {},
paymentTypeList: [{
label: '转账',
value: '1'
}],
paymentTypeIndex: 0,
bankCardList: [{
label: '工行1234567890',
value: '1'
}],
bankCardIndex: 0,
payList: [{}, {}]
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
bindPickerChange(e, type) {
if (type === 'paymentType') {
this.paymentTypeIndex = Number(e.detail.value)
} else if (type === 'bankCard') {
this.bankCardIndex = Number(e.detail.value)
}
},
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0 0 90rpx;
background-color: #F8F6F9;
}
.settlement {
padding: 30rpx;
margin-bottom: 60rpx;
.form {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.form-item {
display: flex;
align-items: center;
justify-content: space-between;
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #F8F6F9;
overflow: hidden;
}
.form-item-fl {
font-size: 30rpx;
color: #373737;
display: flex;
.asterisk {
color: #F42E2E;
width: 10rpx;
margin-right: 6rpx;
}
}
.form-item-fr {
display: flex;
flex: 2;
align-items: center;
justify-content: flex-end;
margin-left: 20rpx;
}
.form-item-tit {
font-size: 30rpx;
color: #666;
margin-right: 20rpx;
text-align: right;
}
.form-item-text {
.title {
height: 100rpx;
line-height: 100rpx;
font-size: 30rpx;
color: #373737;
margin-left: 10rpx;
}
.textarea-box {
background-color: #F8F8F8;
border-radius: 5px;
.textarea {
font-size: 30rpx;
width: 100%;
min-height: 200rpx;
padding: 20rpx;
box-sizing: border-box;
}
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
color: #B6B6BA;
background-color: #F8F8F8;
border: 1px solid #B6B6BA;
border-radius: 36rpx;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
.belongs-to {
padding: 30rpx;
background-color: #F8F6F9;
display: flex;
border-radius: 16rpx;
margin-top: 20rpx;
.text {
width: 100%;
text-align: center;
.name {
font-size: 28rpx;
color: #B6B6BA;
margin-bottom: 10rpx;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
.submit-box {
padding: 30rpx;
background: #ffffff;
position: fixed;
width: 100%;
box-sizing: border-box;
bottom: 0;
display: flex;
justify-content: space-between;
align-items: center;
.left {
.amount {
font-size: 40rpx;
color: #6A59F2;
font-weight: bold;
}
.time {
font-size: 28rpx;
color: #9D9CA6;
margin-top: 10rpx;
}
}
.right {
.form-submit {
height: 80rpx;
line-height: 80rpx;
background-color: #6A59F2;
border-radius: 80rpx;
width: 240rpx;
text-align: center;
font-size: 28rpx;
color: #FFFFFF;
}
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="settlement">
<view class="details">
<view class="item">
<view class="name">对账总金额 </view>
<view class="detail amount">¥5000.00</view>
</view>
<view class="item">
<view class="name">结算方式</view>
<view class="detail">转账</view>
</view>
<view class="item">
<view class="name">银行卡</view>
<view class="detail">6524154285628542254</view>
</view>
<view class="item">
<view class="name">对账日期</view>
<view class="detail">2021-11-21 13:00</view>
</view>
<view class="item text">
<view class="name">备注</view>
<view class="detail"></view>
</view>
</view>
<view class="list">
<view class="item" v-for="item in payList" :key="item.id" @click="toDetail(item.id)">
<view class="title">
<view class="name">CX312314141241</view>
<view class="tag">已对账</view>
</view>
<view class="content">
<view class="text">
<view class="name">用户账号</view>
<view class="detail">18888889999</view>
</view>
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name"> 订单时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
<view class="belongs-to">
<view class="text">
<view class="name">所属小区</view>
<view class="detail">汉江之星小区</view>
</view>
<view class="text">
<view class="name">所属物业</view>
<view class="detail">汉江之星物业公司</view>
</view>
</view>
</view>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
formData: {},
paymentTypeList: [{
label: '转账',
value: '1'
}],
paymentTypeIndex: 0,
bankCardList: [{
label: '工行1234567890',
value: '1'
}],
bankCardIndex: 0,
payList: [{}, {}]
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
bindPickerChange(e, type) {
if (type === 'paymentType') {
this.paymentTypeIndex = Number(e.detail.value)
} else if (type === 'bankCard') {
this.bankCardIndex = Number(e.detail.value)
}
},
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0;
background-color: #F8F6F9;
}
.settlement {
padding: 30rpx;
.details {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.item {
width: 100%;
display: flex;
justify-content: space-between;
height: 60rpx;
line-height: 60rpx;
.name {
width: 35%;
font-size: 28rpx;
color: #B6B6BA;
}
.detail {
width: 65%;
font-size: 28rpx;
color: #373737;
text-align: right;
}
.amount{
font-size: 40rpx;
color: #6A59F2;
font-weight: bold;
}
}
.text {
height: auto;
.detail {
line-height: 52rpx;
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
color: #B6B6BA;
background-color: #F8F8F8;
border: 1px solid #B6B6BA;
border-radius: 36rpx;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
.belongs-to {
padding: 30rpx;
background-color: #F8F6F9;
display: flex;
border-radius: 16rpx;
margin-top: 20rpx;
.text {
width: 100%;
text-align: center;
.name {
font-size: 28rpx;
color: #B6B6BA;
margin-bottom: 10rpx;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
</style>
\ No newline at end of file
<template>
<view class="container">
<view class="page">
<view class="search">
<uni-search-bar placeholder="请输入单号" bgColor="#F8F6F9" radius="100" @confirm="search" @cancel="cancel" />
</view>
<view class="settlement">
<view class="top">
<view class="tab">
<view :class="active == 1?'tit on':'tit'" @click="toWwitch(1)">未结算<view class="num">3</view>
</view>
<view :class="active == 2?'tit on':'tit'" @click="toWwitch(2)">已结算</view>
<view :class="active == 3?'tit on':'tit'" @click="toWwitch(3)">结算待审核</view>
<view :class="active == 4?'tit on':'tit'" @click="toWwitch(4)">结算驳回</view>
</view>
</view>
<view class="list">
<view class="item" v-for="item in payList" :key="item.id" @click="toDetail(item.id)">
<view class="title">
<view class="name">CX312314141241</view>
<view class="tag">未结算<uni-icons type="forward" size="13" color="#6A59F2"></uni-icons></view>
</view>
<view class="content">
<view class="text">
<view class="name">分利金额</view>
<view class="detail">¥3000.00</view>
</view>
<view class="text">
<view class="name">账单数量</view>
<view class="detail">3</view>
</view>
<view class="text">
<view class="name">结算方式</view>
<view class="detail">转账</view>
</view>
<view class="text">
<view class="name">提交时间</view>
<view class="detail">2021-11-21 13:00</view>
</view>
</view>
</view>
</view>
<no-data :show="payList.length === 0" text="暂无缴费信息"></no-data>
</view>
</view>
</view>
</template>
<script>
import {
communityPaymentApi
} from '@/config/api.js'
import noData from '@/components/no-data/no-data'
export default {
components: {
noData
},
data() {
return {
active:1,
payList: [{}, {}]
}
},
methods: {
async getList(chargeTypeCode) {
let {
result
} = await communityPaymentApi({
chargeTypeCode
})
this.payList = result.records
},
toWwitch(type) {
this.active = type;
},
toDetail(id) {
uni.navigateTo({
url: `/pages/settlementApplyfor/index?id=${id}`,
});
}
},
onLoad(option) {
// this.userName = uni.getStorageSync('user_name')
// this.userPhone = uni.getStorageSync('user_phone')
// this.platformName = uni.getStorageSync('platform_name')
// this.getList(option.code)
// let obj = freeType.find(item=>item.code === option.code)
// if(obj) {
// uni.setNavigationBarTitle({
// title: obj.name
// })
// }
}
}
</script>
<style>
page {
background-color: #F8F6F9;
}
</style>
<style lang="scss" scoped>
.page {
padding: 0 0 90rpx;
background-color: #F8F6F9;
}
.search {
background-color: #ffffff;
}
.settlement {
padding: 30rpx;
.top {
border-radius: 40rpx;
background-color: #FFFFFF;
margin-bottom: 30rpx;
.tab {
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
padding: 0 10rpx;
.tit {
width: 25%;
height: 60rpx;
line-height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
color: #373737;
text-align: center;
.num {
height: 28rpx;
line-height: 28rpx;
padding: 0 10rpx;
border-radius: 14rpx;
background-color: #F6C864;
font-size: 24rpx;
color: #ffffff;
margin-left: 6rpx;
}
}
.on {
border-radius: 30rpx;
background-color: #6A59F2;
color: #ffffff;
}
}
}
.list {
.item {
background-color: #ffffff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
.title {
height: 40rpx;
line-height: 40rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
.name {
font-size: 34rpx;
color: #373737;
display: flex;
font-weight: bold;
}
.tag {
padding: 0 24rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 24rpx;
text-align: center;
color: #6A59F2;
background-color: #F5F4FF;
border: 1px solid #6A59F2;
border-radius: 36rpx;
}
}
.content {
border-top: 1px solid #F0F0F2;
padding-top: 20rpx;
.text {
display: flex;
height: 60rpx;
line-height: 60rpx;
.name {
width: 180rpx;
font-size: 28rpx;
color: #9D9CA6;
}
.detail {
font-size: 28rpx;
color: #373737;
}
}
}
}
}
}
</style>
\ No newline at end of file
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论