Kaynağa Gözat

静态页面完善

master
corala 2 yıl önce
ebeveyn
işleme
599cf42f88
20 değiştirilmiş dosya ile 2145 ekleme ve 231 silme
  1. +3
    -5
      .env.development
  2. +139
    -0
      src/common/http.api.js
  3. +27
    -21
      src/common/http.interceptor.js
  4. +63
    -10
      src/pages.json
  5. +137
    -0
      src/pages/my/applyHistory.vue
  6. +194
    -0
      src/pages/my/apply_baojie.vue
  7. +147
    -0
      src/pages/my/changePrice_check.vue
  8. +210
    -0
      src/pages/my/contact_check.vue
  9. +1
    -1
      src/pages/my/electContract.vue
  10. +3
    -3
      src/pages/my/goonContract.vue
  11. +108
    -0
      src/pages/my/modifyPassword.vue
  12. +10
    -5
      src/pages/my/myapply.vue
  13. +7
    -3
      src/pages/my/mytodo.vue
  14. +117
    -0
      src/pages/my/networkquery.vue
  15. +85
    -0
      src/pages/my/networkquery_detail.vue
  16. +202
    -0
      src/pages/my/repairlist.vue
  17. +490
    -18
      src/pages/otherPage/jjrent.vue
  18. +2
    -2
      src/pages/tabs/index.vue
  19. +198
    -161
      src/pages/tabs/login.vue
  20. +2
    -2
      src/pages/tabs/me.vue

+ 3
- 5
.env.development Dosyayı Görüntüle

@@ -1,6 +1,4 @@
VUE_APP_MODE=development
VUE_APP_SERVER=http://114.215.78.198:8081
url=https://wzx.2weisou.com //404
url=https://erpx.2weisou.com/sjjy
url=http://114.215.78.198:8081/sjjy
url=https://erpx.2weisou.com //404
VUE_APP_SERVER=https://erpx.2weisou.com/sjjy
url=https://wzx.2weisou.com/sjjy
url=https://erpx.2weisou.com/sjjy

+ 139
- 0
src/common/http.api.js Dosyayı Görüntüle

@@ -38,10 +38,102 @@ let appChangePricelisturl = '/appChangePrice/list.do' //改价申请详情(判
let appChangePricecheckurl = '/appChangePrice/check.do' //改价申请校验
let takeHouseApplyurl = '/appTakeHouse/takeHouseApply.do' //带房申请
let takeHouseReviewurl = '/appTakeHouse/takeHouseReview.do' //带房审核
let oneCustomerInfourl= '/appHouseContract/oneCustomerInfo.do' //成交合同第一步客户信息
let getDeptListurl= '/appDept/getDeptList.do' //部门列表
let getPersonListurl= '/appPerson/getPersonList.do' //部门下的人员列表
let twoContractInfourl= '/appHouseContract/twoContractInfo.do' //成交合同第二步合同信息
let getContractListurl= '/appHouseContract/getContractList.do' //合同审核列表
let appSaveurl= '/appHouseContract/appSave.do' //定金合同申请
let depositExamineurl= '/appHouseContract/depositExamine.do' //定金合同审批
let getDepositListurl= '/appHouseContract/getDepositList.do' //合同审核列表
let signDepositCallbackurl= '/appHouseContract/signDepositCallback.do' //签约回调
let djContracturl= '/appHouseContract/djContract.do' //定金合同详情
let contractListurl= '/appHouseContract/contractList.do' //房间续租合同信息查询
let sendCodeurl = '/appPhoneCode/sendCode.do' //手机号发短信
let sendUserurl = '/appPhoneCode/sendUser.do' //用户名发短信
let checkCodeurl = '/appPhoneCode/checkCode.do' //验证短信
let takeHouseListurl = '/appTakeHouse/takeHouseList.do' //带房审核
let cleanRepairHistory1url = '/appCleanRepair/cleanRepairHistory.do' //带房历史列表
let storeUpurl = '/appMediacy/storeUp.do' //居间关注
let cancelStoreUpurl = '/appMediacy/cancelStoreUp.do' //取消居间关注
let storeUp1url = '/appHouse/storeUp.do' //出租关注
let cancelStoreUp1url = '/appMediacy/cancelStoreUp.do' //取消出租关注
let applisturl = '/appNews/list.do' //公告列表
let appdetailurl = '/appNews/detail.do' //公告详情
let appreplyurl= '/appNews/reply.do' //公告回复
let replyListurl= '/appNews/replyList.do' //公告回复列表
let assiturl= '/appNews/assit.do' //公告点赞
let assitCounturl= '/appNews/assitCount.do' //公告点赞总数
let viewListurl= '/appNews/viewList.do' //公告查看查询
let updateStatusurl= '/appCustomer/updateStatus.do' //客户列表放弃客户
let findDetailHistoryurl= '/appMediacy/findDetailHistory.do' //居间查看历史
let personalIntermediaryViewurl= '/appMediacy/personalIntermediaryView.do' //居间查看历史录入
let visiturl= '/appMediacy/visit.do' //居间拜访
let checkVerificationCodeurl= '/appPerson/checkVerificationCode.do' //验证校验码
let getVerificationCodeurl= '/appPerson/getVerificationCode.do' //获取校验码
let forgetResetPasswordurl= '/appPerson/forgetResetPassword.do' //修改密码(忘记密码功能)
let uploadurl= '/file/upload.do' //文件上传
let sendPasswordurl= '/appLock/sendPassword.do' //房源详情-密码锁
let findPersonurl= '/appPerson/findPerson.do' //当前登录人信息查询
let updateLevelurl= '/appCustomer/updateLevel.do' //客源关注功能
let findRepairPersonTaskurl= '/appCleanRepair/findRepairPersonTask.do' //查询当前登录维修人的维修任务
let confirmRepairTaskurl= '/appCleanRepair/confirmRepairTask.do' //维修人员确认当前已完成的维修
let repairEquipmentDictionaryurl= '/appCleanRepair/repairEquipmentDictionary.do' //维修设备字典
let dealurl= '/appContract/deal.do' //成交合同申请
let examineurl= '/appContract/examine.do' //合同主管审核店长审批
let processurl= '/appContractProcess/process.do' //合同申请进度
let contracturl= '/appContractModel/contract.do' //改价申请详情
let oneVerificationContractInfourl= '/appHouseContract/oneVerificationContractInfo.do' //成交合同第一步验证如果只添加部分数据,则根据房间id查询用户信息


const install = (Vue, vm) => {
let oneVerificationContractInfo = (params) => vm.$u.post(oneVerificationContractInfourl, params);
let cleanRepairHistory1 = (params) => vm.$u.post(cleanRepairHistory1url, params);
let storeUp = (params) => vm.$u.post(storeUpurl, params);
let cancelStoreUp = (params) => vm.$u.post(cancelStoreUpurl, params);
let storeUp1 = (params) => vm.$u.post(storeUp1url, params);
let replyList = (params) => vm.$u.post(replyListurl, params);
let appreply = (params) => vm.$u.post(appreplyurl, params);
let appdetail = (params) => vm.$u.post(appdetailurl, params);
let applist = (params) => vm.$u.post(applisturl, params);
let cancelStoreUp1 = (params) => vm.$u.post(cancelStoreUp1url, params);
let getVerificationCode = (params) => vm.$u.post(getVerificationCodeurl, params);
let forgetResetPassword = (params) => vm.$u.post(forgetResetPasswordurl, params);
let checkVerificationCode = (params) => vm.$u.post(checkVerificationCodeurl, params);
let visit = (params) => vm.$u.post(visiturl, params);
let personalIntermediaryView = (params) => vm.$u.post(personalIntermediaryViewurl, params);
let findDetailHistory = (params) => vm.$u.post(findDetailHistoryurl, params);
let updateStatus = (params) => vm.$u.post(updateStatusurl, params);
let viewList = (params) => vm.$u.post(viewListurl, params);
let assitCount = (params) => vm.$u.post(assitCounturl, params);
let assit = (params) => vm.$u.post(assiturl, params);
let contract = (params) => vm.$u.post(contracturl, params);
let process = (params) => vm.$u.post(processurl, params);
let examine = (params) => vm.$u.post(examineurl, params);
let deal = (params) => vm.$u.post(dealurl, params);
let repairEquipmentDictionary = (params) => vm.$u.post(repairEquipmentDictionaryurl, params);
let confirmRepairTask = (params) => vm.$u.post(confirmRepairTaskurl, params);
let findRepairPersonTask = (params) => vm.$u.post(findRepairPersonTaskurl, params);
let updateLevel = (params) => vm.$u.post(updateLevelurl, params);
let findPerson = (params) => vm.$u.post(findPersonurl, params);
let sendPassword = (params) => vm.$u.post(sendPasswordurl, params);
let upload = (params) => vm.$u.post(uploadurl, params);
let login = (params) => vm.$u.post(loginurl, params);
let sendCode = (params) => vm.$u.post(sendCodeurl, params);
let sendUser = (params) => vm.$u.post(sendUserurl, params);
let checkCode = (params) => vm.$u.post(checkCodeurl, params);
let takeHouseList = (params) => vm.$u.post(takeHouseListurl, params);
let contractList = (params) => vm.$u.post(contractListurl, params);
let djContract = (params) => vm.$u.post(djContracturl, params);
let signDepositCallback = (params) => vm.$u.post(signDepositCallbackurl, params);
let getDepositList = (params) => vm.$u.post(getDepositListurl, params);
let depositExamine = (params) => vm.$u.post(depositExamineurl, params);
let appSave = (params) => vm.$u.post(appSaveurl, params);
let getContractList = (params) => vm.$u.post(getContractListurl, params);
let twoContractInfo = (params) => vm.$u.post(twoContractInfourl, params);
let getPersonList = (params) => vm.$u.post(getPersonListurl, params);
let getDeptList = (params) => vm.$u.post(getDeptListurl, params);
let oneCustomerInfo = (params) => vm.$u.post(oneCustomerInfourl, params);
let appChangePriceapply = (params) => vm.$u.post(appChangePriceapplyurl, params);
let appChangePriceaccept = (params) => vm.$u.post(appChangePriceaccepturl, params);
let appChangePriceprocess = (params) => vm.$u.post(appChangePriceprocessurl, params);
@@ -85,6 +177,53 @@ const install = (Vue, vm) => {
vm.$u.api = {
login,
sendCode,
sendUser,
checkCode,
oneVerificationContractInfo,
assit,
assitCount,
viewList,
updateStatus,
findDetailHistory,
personalIntermediaryView,
visit,
checkVerificationCode,
forgetResetPassword,
getVerificationCode,
findDetailHistory,
applist,
cancelStoreUp1,
appreply,
appdetail,
replyList,
storeUp1,
cleanRepairHistory1,
storeUp,
cancelStoreUp,
contract,
process,
examine,
deal,
repairEquipmentDictionary,
confirmRepairTask,
findRepairPersonTask,
updateLevel,
findPerson,
sendPassword,
upload,
takeHouseList,
contractList,
djContract,
signDepositCallback,
getDepositList,
depositExamine,
appSave,
getContractList,
twoContractInfo,
getPersonList,
getDeptList,
oneCustomerInfo,
companyReport,
agentRanking,
departmentReport,


+ 27
- 21
src/common/http.interceptor.js Dosyayı Görüntüle

@@ -6,48 +6,54 @@ const install = (Vue, vm) => {
timeout: 10000,
// loadingText: '努力加载中~',
header: {
'Authorization': 'Bearer '+vm.vuex_token,
// "user": {
// "token": vm.vuex_token,
// }
},
data:{
header: {
user: {
token: vm.vuex_token
},
},
body: {}
}
});
// 请求拦截
Vue.prototype.$u.http.interceptor.request = (config) => {
// console.log(vm.vuex_token)
console.log(config)
if (vm.vuex_token) {
config.header.Authorization = 'Bearer ' + vm.vuex_token
config.header.token = vm.vuex_token
}
config.data.header = {
user: {
token: vm.vuex_token,
}
}
return config;
}
// 响应拦截
Vue.prototype.$u.http.interceptor.response = (res) => {
// console.log(res)
if (res.statusCode == 200) {
console.log(res)
if (res.data.ErrNo == '0000') {
return res.data;
} else if (res.statusCode == 401) {
} else if (res.data.ErrNo == '0005') {
uni.showToast({
title: res.data.msg || '未登录',
title: res.data.ErrMsg || '未登录',
icon: "none",
duration: 3000
})
// uni.navigateTo({
// url: '/pages/login/type'
// });
uni.navigateTo({
url: '/pages/tabs/login'
});
return;
} else if (res.statusCode == 500) {
uni.showToast({
title: res.data.msg || '加载失败',
icon: "none",
duration: 3000
})
return;
} else if (res.statusCode == 503) {
} else {
uni.showToast({
title: '网络服务有问题',
title: res.data.ErrMsg || '加载失败',
icon: "none",
duration: 3000
})
return;
} else {
return;
}
}
}


+ 63
- 10
src/pages.json Dosyayı Görüntüle

@@ -17,18 +17,23 @@
},
"pages": [
{
"path": "pages/tabs/login",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle": "custom"
}
},
{
"path": "pages/tabs/index",
// "path": "pages/tabs/index",
// "style": {
// "navigationBarTitleText": "8090公寓",
// "navigationBarTextStyle": "black"
// }
// },{
"path": "pages/tabs/login",
"style": {
"navigationBarTitleText": "8090公寓",
"navigationBarTextStyle": "black"
"navigationBarTitleText": "登录",
"navigationStyle": "custom"
}
},{
"path": "pages/tabs/index",
"style": {
"navigationBarTitleText": "8090公寓",
"navigationBarTextStyle": "black"
}
}, {
"path": "pages/tabs/customer",
"style": {
@@ -101,12 +106,60 @@
"navigationBarTitleText": "我的待办",
"navigationBarTextStyle": "black"
}
}, {
"path": "apply_baojie",
"style": {
"navigationBarTitleText": "首次保洁",
"navigationBarTextStyle": "black"
}
}, {
"path": "networkquery",
"style": {
"navigationBarTitleText": "网络查询",
"navigationBarTextStyle": "black"
}
}, {
"path": "applyHistory",
"style": {
"navigationBarTitleText": "申请历史",
"navigationBarTextStyle": "black"
}
}, {
"path": "repairlist",
"style": {
"navigationBarTitleText": "维修清单",
"navigationBarTextStyle": "black"
}
}, {
"path": "networkquery_detail",
"style": {
"navigationBarTitleText": "网络查询详情",
"navigationBarTextStyle": "black"
}
}, {
"path": "changePrice_check",
"style": {
"navigationBarTitleText": "改价审核",
"navigationBarTextStyle": "black"
}
}, {
"path": "contact_check",
"style": {
"navigationBarTitleText": "合同审核",
"navigationBarTextStyle": "black"
}
}, {
"path": "electContract",
"style": {
"navigationBarTitleText": "电子合同",
"navigationBarTextStyle": "black"
}
}, {
"path": "modifyPassword",
"style": {
"navigationBarTitleText": "修改密码",
"navigationBarTextStyle": "black"
}
}]
}, {
"root": "pages/customer",


+ 137
- 0
src/pages/my/applyHistory.vue Dosyayı Görüntüle

@@ -0,0 +1,137 @@
<template>
<view class="container">
<view class="list-item" v-for="(item,index) in listData" :key="index">
<view class="top">
<view class="top-left">
<image class="icon" src="/static/kehu/person_gray.png" mode="" />{{item.name}}
</view>
<view class="time">{{item.time}}</view>
</view>
<view class="bot">{{item.address}}</view>
<view class="status-box">
<view class="left">由 {{item.person}} 提交申请</view>
<view class="btn success-btn" v-if="item.status==1">审核通过</view>
<view class="btn fail-btn" v-else-if="item.status==0">未通过</view>
<view class="btn dealing-btn" v-else>处理中</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
listData: [{
name:'张晨',
status: 0,address:'惠中北里 106号楼 24层',person:'marry',time:'2022-10-26 10:20:00'
},{name:'张晨',
status: 0,address:'惠中北里 106号楼 24层',person:'marry',time:'2022-10-26 10:20:00'},
{name:'张晨',
status: 0,address:'惠中北里 106号楼 24层',person:'marry',time:'2022-10-26 10:20:00'},
{name:'张晨',
status: 0,address:'惠中北里 106号楼 24层',person:'marry',time:'2022-10-26 10:20:00'}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.list-item{
background: #fff;
margin-bottom: 20rpx;
padding: 30rpx 30rpx 0;
font-family: PingFangSC-Regular, PingFang SC;
.top{
display: flex;
justify-content: space-between;
align-items: center;
.top-left{
display: flex;
align-items: center;
font-size: 30rpx;
font-weight: 400;
color: #333333;
.icon{
width: 28rpx;
height: 30rpx;
margin-right: 12rpx;
}
}
.time{
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
color: #666666;
line-height: 42rpx;
}
}
.bot{
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
color: #333333;
line-height: 42rpx;
margin-top: 20rpx;
}
.status-box{
margin-top: 30rpx;
border-top: 1px solid #e0e0e0;
height: 96rpx;
display: flex;
align-items: center;
justify-content: space-between;
.left{
height: 42rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 42rpx;
}
.btn{
width: 144rpx;
height: 56rpx;
border-radius: 8rpx;
text-align: center;
line-height: 56rpx;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
}
.success-btn{
background: rgba(7,183,157,0.04);
border: 1px solid #07B79D;
color: #07B79D;
}
.fail-btn{
background: rgba(231,72,60,0.04);
border: 1px solid #E7483C;
color: #E7483C;
}
.dealing-btn{
background: rgba(254,160,23,0.04);
border: 1px solid #FEA017;
color: #FEA017;
}
}
}
}
</style>

+ 194
- 0
src/pages/my/apply_baojie.vue Dosyayı Görüntüle

@@ -0,0 +1,194 @@
<template>
<view class="container">
<view class="form-box">
<view class="item">
<view class="label">房屋地址</view>
<view class="input">
<u-input height="102" @click="addressShow = true" type="text" disabled input-align="right" v-model="form.houseAddressName" placeholder="请选择房屋地址"></u-input>
<image class="path" src="/static/path.png" mode="" @click="addressShow = true"/>
<u-select confirm-color="#FF6D25" v-model="addressShow" :list="sourceList" @confirm="confirmSource"></u-select>
</view>
</view>
<view class="item">
<view class="label">台账号</view>
<view class="input">
<u-input :clearable="false" type="text" input-align="right" v-model="form.tel" placeholder="请输入台账号"></u-input>
</view>
</view>
<view class="item">
<view class="label">上门时间</view>
<view class="input" >
<u-input height="102" @click="calendarShow = true" disabled input-align="right" v-model="form.date" placeholder="请选择上门时间"></u-input>
<image class="calendar" @click="calendarShow = true" src="/static/kehu/calendar.png" mode=""/>
<u-picker mode="time" confirm-color="#FF6D25" :default-time="form.date" v-model="calendarShow" :params="params" @confirm="dateConfirm"></u-picker>
</view>
</view>
<view class="item">
<view class="label">申请部门</view>
<view class="input">
<u-input :clearable="false" type="text" input-align="right" v-model="form.deptName" placeholder="请输入申请部门"></u-input>
</view>
</view>
<view class="item">
<view class="label">申请人</view>
<view class="input">
<u-input :clearable="false" type="text" input-align="right" v-model="form.applyPerson" placeholder="请输入申请人"></u-input>
</view>
</view>
<view class="last-item">
<view class="label">备注内容</view>
<u-input style="flex:1" input-align="right" :custom-style="customStyle" v-model="form.mark" :height="60" :auto-height="true" type="textarea" :clearable="false" placeholder="请输入备注内容"></u-input>
</view>
</view>
<view class="submit-btn" @click="submit">提交</view>
</view>
</template>
<script>
export default {
data() {
return {
calendarShow: false,
addressShow: false,
params: {
year: true,
month: true,
day: true,
hour: true,
minute: true,
second: true
},
form: {
houseAddress: '',
houseAddressName: '',
deptName: '开发部一处',
applyPerson:'张三地方',
date:'',
mark: ''//备注
},
sourceList: [
{
value: '1',
label: '来电'
},
{
value: '2',
label: '来访'
},
{
value: '3',
label: '到访'
},
{
value: '4',
label: '2来访'
},
],
customStyle:{
maxHeight:'200rpx',
padding: '20rpx',
fontSize: '30rpx',
borderBottom:'1px solid #e0e0e0'
}
};
},
onLoad(options) {
},
onShow() {
},
methods: {
dateConfirm(e){
console.log(e)
this.form.date = e.year + '-'+e.month + '-'+e.day+ ' '+e.hour+':'+e.minute+':'+e.second
},
confirmSource(e){
console.log(e)
this.form.houseAddress = e[0].value
this.form.houseAddressName = e[0].label
},
submit() {
},
},

onLoad: function(options) {
},
onHide: function() {},
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
onReady() {
}
};
</script>

<style lang="scss" scoped>
.container {
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.form-box{
background: #fff;
padding: 0 30rpx;
.item{
height: 102rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
line-height: 102rpx;
color: #333333;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
justify-content: space-between;
.label{
width: 120rpx;
margin-right: 20rpx;
}
.input{
width: 380rpx;
display: flex;
align-items: center;
justify-content: flex-end;
.path{
width: 14rpx;
height: 30rpx;
margin-left: 20rpx;
}
.calendar{
width: 40rpx;
height: 40rpx;
margin-left: 20rpx;
}

}
}
.last-item{
display: flex;
.label{
line-height: 102rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-right: 150rpx;
}

}
}
.submit-btn{
width: 690rpx;
height: 88rpx;
line-height: 88rpx;
text-align: center;
background: #FFB692;
border-radius: 12rpx;
margin-left: 30rpx;
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
position: fixed;
bottom: 90rpx;
}
}
</style>

+ 147
- 0
src/pages/my/changePrice_check.vue Dosyayı Görüntüle

@@ -0,0 +1,147 @@
<template>
<view class="container">
<view class="list-box">
<view class="list-item" @click="selectItem(item)" v-for="(item,index) in listData" :key="index">
<view class="item-info">
<view class="name u-line-1">{{item.name}}</view>
<view class="right">{{item.time}}</view>
</view>
<view class="item-info">
<view class="address u-line-1">{{item.address}}</view>
<view class="right">台账号:{{item.account}}</view>
</view>
<view class="item-info">
<view class="left ">原价:<view class="oldprice">{{item.oldprice}}</view></view>
<view class="right">改价:<view class="newprice">{{item.newprice}}</view></view>
</view>
<view class="btn-box">
<view class="btn pass">通过</view>
<view class="btn refuse">拒绝</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword: '',
listData: [{
address:'惠中北里 106号楼 24层',
name:'张晨张',
person: '张26D',
time: '2021-12-22 18:00:40',
account: '刘604A',
oldprice: 145,
newprice: 100
},{
address:'惠中北里惠中北里惠中北里 106号楼 24层',
name:'张晨张张晨张张晨张张晨张张晨张张晨张',
person: '张26D',
time: '2021-12-22 18:00:40',
account: '刘604A',
oldprice: 145,
newprice: 100
}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.list-box{
.list-item{
padding: 30rpx;
height: 306rpx;
background: #fff;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-bottom: 20rpx;
.item-info{
display: flex;
margin-bottom: 24rpx;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 40rpx;
.name{
flex: 1;
}
.address{
}
.left{
flex: 1;
display: flex;
align-items: center;
.oldprice{
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
}
}
.right{
flex: 0 0 278rpx;
margin-left: 30rpx;
display: flex;
align-items: center;
.newprice{
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #FF6D25;
}
}
}
.btn-box{
display: flex;
justify-content: flex-end;
.btn{
width: 128rpx;
height: 54rpx;
line-height: 54rpx;
text-align: center;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
border-radius: 8rpx;
}
.pass{
background: #FF6D25;
color: #fff;
border: 1px solid #FF6D25;
margin-right: 30rpx;
}
.refuse{
background: #FFFFFF;
border: 1px solid #FF6D25;
color: #FF6D25;
}
}
}
}
}
</style>

+ 210
- 0
src/pages/my/contact_check.vue Dosyayı Görüntüle

@@ -0,0 +1,210 @@
<template>
<view class="container">
<view class="list-box">
<view class="list-item" v-for="(item,index) in listData" :key="index">
<view class="item-info">
<view class="name">合同地址</view>
<view class="value u-line-1">惠新西街口11单元302</view>
<image class="path" src="/static/path.png" mode="" />
</view>
<view class="item-info">
<view class="name">租约期限</view>
<view class="value">2022.05.19 - 2022.08</view>
</view>
<view class="item-info">
<view class="name">付款方式</view>
<view class="value">月付</view>
</view>
<view class="item-info">
<view class="name">付款方式</view>
<view class="value">月付</view>
</view>
<view class="item-info">
<view class="name">月租金</view>
<view class="value">6001</view>
</view>
<view class="pay-info">
<view class="subitem" v-for="(subitem,i) in item.paylist" :key="i">
<view class="label">付款日期<view class="value">2022.09.20</view></view>
<view class="label">付款金额<view class="value">房租6001</view></view>
</view>
</view>
<view class="btn-box">
<view class="btn pass" @click="showmodal=true">通过</view>
<view class="btn refuse">驳回</view>
</view>
</view>
</view>
<u-modal title="确认操作" @confirm="confirm" show-cancel-button confirm-color="#FF6D25" confirm-text="通过" :mask-close-able="true" v-model="showmodal" :title-style="titleStyle">
<view class="slot-content">
<view class="my-tip">您确认通过该审核吗?</view>
<!-- <rich-text :nodes="content"></rich-text> -->
</view>
</u-modal>
<u-toast ref="uToast" />
</view>
</template>
<script>
export default {
data() {
return {
showmodal: false,
titleStyle: {
fontSize: '32rpx',
fontFamily: 'PingFangSC-Semibold, PingFang SC',
fontWeight: 600,
color: '#333333'
},
listData: [{
address:'惠中北里 106号楼 24层',
name:'张晨张',
person: '张26D',
time: '2021-12-22 18:00:40',
account: '刘604A',
oldprice: 145,
newprice: 100,
paylist: [{},{},{},{},{},{},{},{}],
},{
address:'惠中北里惠中北里惠中北里 106号楼 24层',
name:'张晨张张晨张张晨张张晨张张晨张张晨张',
person: '张26D',
time: '2021-12-22 18:00:40',
account: '刘604A',
oldprice: 145,
newprice: 100,
paylist: [{},{}],
}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {
showToast() {
this.$refs.uToast.show({
title: '审核成功',
icon: false,
type:'success'
// url: '/pages/user/index'
})
},
confirm(){
this.showToast()
}
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.list-box{
.list-item{
padding: 30rpx;
background: #fff;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-bottom: 20rpx;
.item-info{
display: flex;
align-items: center;
margin-bottom: 24rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
line-height: 40rpx;
.name{
flex: 0 0 112rpx;
color: #666666;
margin-right: 58rpx;
}
.value{
flex: 1;
color: #333;
}
.path{
flex: 0 0 14rpx;
width: 14rpx;
height: 30rpx;
margin-left: 10rpx;
}
}
.pay-info{
width: 690rpx;
background: rgba(247, 248, 252, .7);
border-radius: 8rpx;
padding: 30rpx;
margin-bottom: 24rpx;
.subitem{
width: 100%;
height: 40rpx;
display: flex;
justify-content: space-between;
margin-bottom: 20rpx;
&:last-child{
margin-bottom: 0;
}
.label{
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 40rpx;
display: flex;
align-items: center;
.value{
color: #333333;
margin-left: 10rpx;
}
}
}
}
.btn-box{
display: flex;
justify-content: flex-end;
.btn{
width: 128rpx;
height: 54rpx;
line-height: 54rpx;
text-align: center;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
border-radius: 8rpx;
}
.pass{
background: #FF6D25;
color: #fff;
border: 1px solid #FF6D25;
margin-right: 30rpx;
}
.refuse{
background: #FFFFFF;
border: 1px solid #FF6D25;
color: #FF6D25;
}
}
}
}
.my-tip{
text-align: center;
margin: 40rpx 0;
color: #666
}
}
</style>

+ 1
- 1
src/pages/my/electContract.vue Dosyayı Görüntüle

@@ -100,7 +100,7 @@
<view class="input">
<u-input height="102" style="width:380rpx" disabled input-align="right" v-model="form.rentDate" @click="calendarShow = true" placeholder="请选择租约期限"></u-input>
<image class="calendar" src="/static/kehu/calendar.png" mode="" @click="calendarShow = true" />
<u-calendar v-model="calendarShow" mode="range" max-date="2099-12-31" @change="changeDate"></u-calendar>
<u-calendar v-model="calendarShow" mode="range" @change="changeDate"></u-calendar>
</view>
</view>
<view class="item">


+ 3
- 3
src/pages/my/goonContract.vue Dosyayı Görüntüle

@@ -12,7 +12,7 @@
<view v-if="endDate">{{endDate}}</view>
<view v-else class="desc">结束日期</view>
</view>
<u-calendar v-model="calendarShow" mode="date" @change="changeDate"></u-calendar>
<u-calendar v-model="calendarShow" :min-date="mindate" :max-date="maxdate" mode="date" @change="changeDate"></u-calendar>
</view>
<view class="list-item" v-for="(item,index) in listData" :key="index">
<view class="top">
@@ -36,7 +36,7 @@
starDate: '',
endDate: '',
mindate: '',
maxdate: '',
maxdate: '2099-12-31',
type: 0,// 默认是开始时间
calendarShow: false,
listData: [{},{},{},{}]
@@ -56,7 +56,7 @@
}else{
this.type = 1
this.mindate = this.starDate
this.maxdate = ''
this.maxdate = '2099-12-31'
}
this.calendarShow = true;
},


+ 108
- 0
src/pages/my/modifyPassword.vue Dosyayı Görüntüle

@@ -0,0 +1,108 @@
<template>
<view class="container">
<view class="form-box">
<view class="item">
<view class="label">账号</view>
<view class="input">
<u-input :clearable="false" v-model="form.account" placeholder="请输入账号"></u-input>
</view>
</view>
<view class="item">
<view class="label">原密码</view>
<view class="input">
<u-input :clearable="false" maxlength="20" type="number" v-model="form.oldPassword" placeholder="请输入原密码"></u-input>
</view>
</view>
<view class="item">
<view class="label">新密码</view>
<view class="input">
<u-input :clearable="false" maxlength="20" type="text" v-model="form.newPassword" placeholder="请输入新密码"></u-input>
</view>
</view>
<view class="item" style="border-bottom:0">
<view class="label">确认密码</view>
<view class="input">
<u-input :clearable="false" maxlength="20" type="etxt" v-model="form.checkPassword" placeholder="请输入确认密码"></u-input>
</view>
</view>
</view>
<view class="submit-btn" @click="submit">完成</view>
</view>
</template>
<script>
export default {
data() {
return {
form: {
account: '',
oldPassword: '',
newPassword:'',
checkPassword: '',
}
};
},
onLoad(options) {
},
onShow() {
},
methods: {
submit() {
},
},

onLoad: function(options) {
},
onHide: function() {},
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
onReady() {
}
};
</script>

<style lang="scss" scoped>
.container {
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.form-box{
background: #fff;
padding: 0 30rpx;
.item{
height: 88rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
line-height: 88rpx;
color: #333333;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
.label{
width: 120rpx;
margin-right: 88rpx;
}
.input{
display: flex;
align-items: center;
}
}
}
.submit-btn{
width: 690rpx;
height: 88rpx;
line-height: 88rpx;
text-align: center;
background: #FF6D25;
border-radius: 12rpx;
margin: 160rpx 30rpx 0;
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
}
}
</style>

+ 10
- 5
src/pages/my/myapply.vue Dosyayı Görüntüle

@@ -1,23 +1,23 @@
<template>
<view class="container">
<view class="top-tabs">
<view class="tab">
<view class="tab" @click="topage('apply_baojie')">
<image class="img" src="/static/myapply/apply.png" mode="" />
待房申请
</view>
<view class="tab">
<view class="tab" @click="topage('apply_baojie')">
<image class="img" src="/static/myapply/clear.png" mode="" />
首次保洁
</view>
<view class="tab">
<view class="tab" @click="topage('apply_baojie')">
<image class="img" src="/static/myapply/repair.png" mode="" />
首次维修
</view>
<view class="tab">
<view class="tab" @click="topage('applyHistory')">
<image class="img" src="/static/myapply/history.png" mode="" />
申请历史
</view>
<view class="tab">
<view class="tab" @click="topage('repairlist')">
<image class="img" src="/static/myapply/record.png" mode="" />
装修清单
</view>
@@ -35,6 +35,11 @@
},
methods: {
topage(page){
uni.navigateTo({
url: '/pages/my/'+page
})
}
},



+ 7
- 3
src/pages/my/mytodo.vue Dosyayı Görüntüle

@@ -17,7 +17,7 @@
<image class="img" src="/static/myTodo/clear.png" mode="" />
开荒保洁
</view>
<view class="tab">
<view class="tab" @click="topage('changePrice_check')">
<image class="img" src="/static/myTodo/check.png" mode="" />
改价审核
</view>
@@ -25,7 +25,7 @@
<image class="img" src="/static/myTodo/repairMan.png" mode="" />
维修员
</view>
<view class="tab">
<view class="tab" @click="topage('contact_check')">
<image class="img" src="/static/myTodo/fitment.png" mode="" />
合同审核
</view>
@@ -47,7 +47,11 @@
},
methods: {
topage(page){
uni.navigateTo({
url: '/pages/my/'+page
})
}
},

onLoad: function(options) {


+ 117
- 0
src/pages/my/networkquery.vue Dosyayı Görüntüle

@@ -0,0 +1,117 @@
<template>
<view class="container">
<view class="search">
<u-search placeholder="房间号搜索" height="78" :show-action="false" v-model="keyword"></u-search>
</view>
<view class="list-box">
<view class="list-item" @click="selectItem(item)" v-for="(item,index) in listData" :key="index">
<view class="person-info">
<image class="icon" src="/static/kehu/person_gray.png" mode="" />
<view class="name u-line-1">{{item.name}}</view>
</view>
<view class="house u-line-1">{{item.address}}</view>
<view class="right">
<view class="house u-line-1">{{item.person}}</view>
<image class="path" src="/static/path.png" mode="" />
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword: '',
listData: [{
address:'惠中北里 106号楼 24层',
name:'张晨张',
person: '张26D'
},{address:'惠中北里 106号楼 24层',
name:'zhangzj',person: '张26D'},
{address:'惠中北里惠中北里惠中北里惠中北里惠中北里 106号楼 24层',
name:'张晨',person: '张26D'},
{address:'惠中北里 106号楼 24层',
name:'张晨',person: '张26D'}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {
selectItem(item){
wx.setStorageSync('houseSource',item)
// wx.navigateTo({
// url:'/pages/customer/addLedlook'
// })
wx.navigateBack()
}
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
.search{
width: 100%;
height: 110rpx;
padding:16rpx 30rpx;
background: #fff;
margin-bottom: 20rpx;
}
.list-box{
.list-item{
padding: 0 30rpx;
height: 100rpx;
line-height: 100rpx;
background: #fff;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 28rpx;
font-weight: 400;
color: #333333;
display: flex;
align-items: center;
margin-bottom: 20rpx;
.person-info{
display: flex;
align-items: center;
.icon{
width: 28rpx;
height: 30rpx;
margin-right: 12rpx;
}
.name{
width: 110rpx;
}
}
.house{
flex:1;
margin: 0 10rpx;
}
.right{
display: flex;
align-items: center;
.house{
max-width: 100rpx;
}
.path{
width: 14rpx;
height: 30rpx;
margin-left: 12rpx;
}
}
}
}
}
</style>

+ 85
- 0
src/pages/my/networkquery_detail.vue Dosyayı Görüntüle

@@ -0,0 +1,85 @@
<template>
<view class="container">
<view class="info-box">
<view class="info">
<view class="label">公司名称:</view>
<view class="value">方正宽带</view>
</view>
<view class="info">
<view class="label">用户名:</view>
<view class="value">bjadmin</view>
</view>
<view class="info">
<view class="label">密码:</view>
<view class="value">12345678</view>
</view>
<view class="info">
<view class="label">有效时间:</view>
<view class="value">2022.05.19 - 2022.08</view>
</view>
<view class="info">
<view class="label">联系人:</view>
<view class="value">test</view>
</view>
<view class="info">
<view class="label">电话:</view>
<view class="value">18610029470</view>
</view>
<view class="info" style="margin-bottom:0">
<view class="label">备注:</view>
<view class="value">test</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
},
onLoad(options) {
},
onShow() {
},
methods: {
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.info-box{
background-color: #fff;
padding: 30rpx;
}
.info{
display: flex;
align-items: center;
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
margin-bottom: 24rpx;
.label{
width: 140rpx;
margin-right: 30rpx;
}
.value{
font-weight: 400;
color: #333333;
}

}
}
</style>

+ 202
- 0
src/pages/my/repairlist.vue Dosyayı Görüntüle

@@ -0,0 +1,202 @@
<template>
<view class="container">
<view class="calendar">
<view class="date" @click="openCalendar(0)">
<view v-if="starDate">{{starDate}}</view>
<view v-else class="desc">起始日期</view>
</view>
<view class="date" @click="openCalendar(1)">
<view v-if="endDate">{{endDate}}</view>
<view v-else class="desc">结束日期</view>
</view>
<u-calendar v-model="calendarShow" :min-date="mindate" :max-date="maxdate" mode="date" @change="changeDate"></u-calendar>
</view>
<view class="report-tab">
<u-tabs :list="tabList" bar-width="60" bar-height="6" active-color="#FF6D25" inactive-color="#666666" font-size="30" :is-scroll="false" :current="current" @change="change"></u-tabs>
</view>
<view class="list-item" v-for="(item,index) in listData" :key="index">
<view class="top">
<view class="top-left">
<image class="icon" src="/static/kehu/person_gray.png" mode="" />{{item.name}}
</view>
<view class="tel">{{item.tel}}</view>
</view>
<view class="status-box">
<view class="left">维修项目费用:<view class="money">{{item.money||0}}元</view></view>
<view class="btn success-btn" v-if="item.status==1">已审核</view>
<view class="btn todo-btn" v-else>待审核</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
type: 0,// 默认是开始时间
starDate: '',
endDate: '',
mindate: '',
maxdate: '2099-12-31',
calendarShow: false,
current: 0,
tabList: [{
name: '全部'
}, {
name: '已审核'
}, {
name: '待审核'
}],
listData: [{
name:'测试一下:测试一',money: 180,
status: 0,tel:'17552999012'
},{name:'测试一下:测试一',money: 180,
status: 1,tel:'17552999012'},
{name:'张晨',money: 180,
status: 1,tel:'17552999012'},
{name:'张晨',money: 180,
status: 0,tel:'17552999012'}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {
change(index){
this.current = index
},
openCalendar(type){
if(type==0){
this.type = 0
this.mindate = ''
this.maxdate = this.endDate
}else{
this.type = 1
this.mindate = this.starDate
this.maxdate = '2099-12-31'
}
this.calendarShow = true;
},
changeDate(e){
// console.log(e)
if(this.type==0){
this.starDate = e.result
}else{
this.endDate = e.result
}
}
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
min-height: 100vh;
background: #F8F8F8;
padding-top: 20rpx;
.calendar{
width: 750rpx;
height: 92rpx;
background: #FFFFFF;
margin-bottom: 20rpx;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
padding: 0 40rpx;
.date{
flex:1;
color: #333333;
position: relative;
text-align: center;
&::after{
position: absolute;
content: "";
top: 16rpx;
right: 60rpx;
border-color: #FF6D25;
border: 8rpx solid transparent;
border-top: 8rpx solid #FF6D25;
}
.desc{
color: #999999;
}
}
}
.report-tab{
border-bottom: 1px solid rgba(224,224,224,0.5);
}
.list-item{
height: 168rpx;
background: #fff;
margin-bottom: 20rpx;
padding: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
.top{
display: flex;
justify-content: space-between;
align-items: center;
.top-left{
display: flex;
align-items: center;
font-size: 30rpx;
font-weight: 400;
color: #333333;
.icon{
width: 28rpx;
height: 30rpx;
margin-right: 12rpx;
}
}
.time{
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
color: #333;
line-height: 42rpx;
}
}
.status-box{
height: 96rpx;
display: flex;
align-items: center;
justify-content: space-between;
.left{
height: 42rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 42rpx;
display: flex;
align-items: center;
.money{
font-weight: 600;
}
}
.btn{
width: 100rpx;
height: 42rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
}
.success-btn{
color: #07B79D;
}
.todo-btn{
color: #FEA017;
}
}
}
}
</style>

+ 490
- 18
src/pages/otherPage/jjrent.vue Dosyayı Görüntüle

@@ -1,25 +1,497 @@
<template>
<view class="container">
居间出租
</view>
<view id="app" :class="{ done: done }">
<view>
<h1>{{ title }}</h1>
<button @click="random">
动起来
</button>
</view>
<view class="wrapper flex-all-center" ref="wrapperRef">
<view
class="container"
:style="{ width: containerW + 'px', height: containerH + 'px' }"
>
<view
class="item flex-all-center"
v-for="item in showList"
:key="item.count"
:style="{
left: item.left + 'px',
top: item.top + 'px',
height: item.height + 'px',
width: item.width + 'px',
background: item.color,
}"
>
<view class="content">
<view class="title">{{ item.title }}</view>
<view class="count">{{ item.count }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
export default {
data() {
return {
containerW: 0,
containerH: 0,
done: false,
title: "泡泡堂",
list: [],
showList: [],
groups: [],
colors: [
"red",
"green",
"purple",
"pink",
"orange",
"yellowgreen",
"greenyellow",
],
layout: [
{
type: "group",
name: "group1",
direction: "horizontal", //左右
height: "30%",
width: "100%",
children: [
{
type: "group",
name: "group2",
direction: "portrait", //上下
width: "40%",
height: "100%",
children: [
{
type: "node",
index: 2,
},
{
type: "node",
index: 3,
},
],
},
{
type: "group",
name: "group3",
direction: "portrait", // 上下
width: "60%",
height: "100%",
children: [
{
type: "group",
name: "group4",
width: "100%",
height: "80%",
direction: "horizontal",
children: [
{
type: "node",
index: 1,
},
{
type: "node",
index: 0,
},
],
},
{
type: "group",
name: "group5",
direction: "portrait", // 上下
width: "100%",
height: "20%",
children: [
{
type: "node",
index: 4,
},
],
},
],
},
],
},
{
type: "group",
name: "group6",
direction: "horizontal", //左右
height: "30%",
width: "100%",
children: [
{
type: "group",
name: "group7",
width: "50%",
height: "100%",
direction: "portrait",
children: [
{
type: "node",
index: 5,
},
{
type: "node",
index: 7,
},
],
},
{
type: "group",
name: "group8",
width: "50%",
height: "100%",
direction: "horizontal",
children: [
{
type: "node",
index: 8,
},
{
type: "node",
index: 6,
},
],
},
],
},
{
type: "group",
name: "group9",
width: "100%",
height: "40%",
direction: "horizontal",
children: [
{
type: "group",
name: "group9",
width: "30%",
height: "100%",
direction: "portrait",
children: [
{
type: "node",
index: 9,
},
{
type: "node",
index: 11,
},
{
type: "node",
index: 10,
},
],
},
{
type: "group",
name: "group9",
width: "70%",
height: "100%",
direction: "portrait",
children: [
{
type: "group",
name: "group10",
width: "100%",
height: "30%",
direction: "horizontal",
children: [
{
type: "node",
index: 12,
},
{
type: "node",
index: 16,
},
],
},
{
type: "group",
name: "group11",
width: "100%",
height: "70%",
direction: "horizontal",
children: [
{
type: "group",
name: "group11",
width: "50%",
height: "100%",
direction: "horizontal",
children: [
{
type: "node",
index: 17,
},
],
},
{
type: "group",
name: "group11",
width: "50%",
height: "100%",
direction: "portrait",
children: [
{
type: "node",
index: 13,
},
{
type: "node",
index: 14,
},
{
type: "node",
index: 15,
},
],
},
],
},
],
},
],
},
],
};
},

onShow() {},
mounted() {
this.$nextTick(() => {
console.log(this.$refs.wrapperRef);
// this.containerW = this.$refs.wrapperRef.clientWidth;
this.containerW = 230;
// this.containerH = '1380rpx'
this.containerH = this.containerW * 2;
console.log(this.containerW, this.containerH);
this.initList();
this.initPosition();
});
},
methods: {
percentToPx(cur, compared) {
if (typeof cur !== "string" || !cur.includes("%")) return cur;
return (compared * parseFloat(cur)) / 100;
},
getRandom(min = 1, max = 10000) {
return Math.floor(Math.random() * (max - min) + min);
},
initList() {
this.list = [];
for (let i = 0; i < 18; i++) {
let item = {}
item = Object.create(null);
item.title = `标题${i}`;
item.color = this.colors[this.getRandom(0, this.colors.length - 1)];
item.no = i;
item.count = this.getRandom();
item.width = this.containerW / 3;
item.height = this.containerW / 3;
this.list.push(item);
}
},
initPosition() {
this.showList = this.list.map((item, index) => {
return {
left: ((index % 3) * this.containerW) / 3,
top: (Math.floor(index / 3) * this.containerW) / 3,
...item,
};
});
},
random() {
const parent = {
left: 0,
top: 0,
name: "group0",
width: this.percentToPx("100%", this.containerW),
height: this.percentToPx("100%", this.containerH),
direction: "portrait",
childrenLength: this.layout.length,
};
this.groups = [parent];
this.getPosition(this.layout, parent);
this.showList = this.list;
this.done = true;
},
getPosition(layout, parent) {
// 纵向的,只需要计算高度,如果只有一个元素,则高度100%
// 横向的,只需要计算宽度,如果只有一个元素,则宽度100%
// 如果type为node,则表明是最小单位了,则需要根据index获得数量,然后往上一层和同级别的组进行比较得出宽(横向)高(纵向)
// 但是所有的宽高都计算完之后,还是百分比的,如何计算具体位置呢
const list = this.list;
layout.forEach((item, index) => {
if (item.type === "group") {
const current = {
left: 0,
top: 0,
name: item.name,
width: this.percentToPx(item.width, parent.width),
height: this.percentToPx(item.height, parent.height),
direction: item.direction,
childrenLength: item.children.length,
};
const preItem = index === 0 ? null : layout[index - 1];
// 组
// 横纵向分布都按照设置来
if (parent.direction === "horizontal") {
current.left =
index === 0
? parent.left
: preItem.left + this.percentToPx(preItem.width, parent.width);
current.top = parent.top;
} else {
current.left = parent.left;
current.top =
index === 0
? parent.top
: preItem.top + this.percentToPx(preItem.height, parent.height);
}
item.left = current.left;
item.top = current.top;
this.groups.push(current);
item.nodeTotal = 0;
if (item.children && item.children.length > 0) {
if (item.children[0].type === "node") {
item.children.forEach((v) => {
item.nodeTotal += list[v.index].count;
});
}
current.nodeTotal = item.nodeTotal;
this.getPosition(item.children, current);
}
} else {
const listItem = list[item.index];
const preItem = index === 0 ? null : list[layout[index - 1].index];
if (parent.direction === "horizontal") {
// 节点横向排布,计算宽度
listItem.left =
index === 0
? parent.left
: preItem.left + this.percentToPx(preItem.width, parent.width); // TODO: 需要计算上一个元素的left + width: ;
listItem.top = parent.top;
listItem.width = this.percentToPx(
(listItem.count / parent.nodeTotal) * 100 + "%",
parent.width
);
listItem.height = this.percentToPx("100%", parent.height);
} else if (parent.direction === "portrait") {
// 节点横向排布,计算宽度
listItem.left = parent.left;
listItem.top =
index === 0
? parent.top
: preItem.top + this.percentToPx(preItem.height, parent.height); // TODO: 需要计算上一个元素的left + width: ;
listItem.width = this.percentToPx("100%", parent.width);
listItem.height = this.percentToPx(
(listItem.count / parent.nodeTotal) * 100 + "%",
parent.height
);
}
listItem.name = `node${item.index}`;
}
});
},
},
onLoad() {},
onHide() {},
};
</script>

<style lang="scss" scoped>
* {
margin: 0;
padding: 0;
}

.wrapper {
margin: 0 auto;
width: 90%;
}

.container {
position: relative;
}

.item {
position: absolute;
top: 0;
left: 0;
transform: scale(0.8);
transform-origin: center;
border-radius: 16px;
text-align: center;
transition: 400ms linear;
border: 1px solid pink;
background-color: yellow;
box-sizing: border-box;
}

.group-item {
position: absolute;
border-radius: 8px;
text-align: center;
border: 1px solid pink;
background-color: rgba(0, 128, 0, 0.4);
box-sizing: border-box;
font-size: 20px;
}

.item .content {
position: absolute;
bottom: 4px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: flex-end;
text-align: bottom;
}

.item .title,
.item .count {
font-weight: bold;
line-height: 1em;
}

.item .title {
font-size: 16px;
flex: 1;
text-align: left;
}

.item .count {
font-size: 12px;
padding-right: 12px;
text-align: right;
}

.item .count::before {
content: "票";
position: absolute;
font-size: 12px;
transform: scale(0.8);
transform-origin: center 80%;
color: #666;
right: 0;
bottom: 0;
}

.done .item {
transform: scale(1);
}

.flex-all-center {
display: flex;
justify-content: center;
align-items: center;
}
</style>

+ 2
- 2
src/pages/tabs/index.vue Dosyayı Görüntüle

@@ -18,14 +18,14 @@
我的待办
</view>
</view>
<open-data type="groupName" open-gid="tGspFe44Y83pmo9BfOxzXlFmR1r50"></open-data>
<view class="gonggao">
<view class="left">
<view class="title">公告</view>
<view class="dot"></view>
</view>
<view class="right">
<!-- 关于人才招聘及新员工试用期管理实施... -->
<u-notice-bar type="none" padding="18rpx 0" font-size="28" color="#303030" mode="vertical" :volume-icon="false" :more-icon="false" :list="list"></u-notice-bar>
<u-notice-bar type="none" padding="18rpx 0" font-size="28" color="#303030" mode="vertical" :volume-icon="false" :more-icon="false" :list="list"></u-notice-bar>
</view>
<image class="more-icon" src="/static/index/right-arrow.png" mode="" />
</view>


+ 198
- 161
src/pages/tabs/login.vue Dosyayı Görüntüle

@@ -1,172 +1,209 @@
<template>
<view class="container">
<view class="bg1"></view>
<view class="bg2"></view>
<image class="logo" src="/static/logo.png" mode="" />
<view class="form">
<view class="input-box">
<u-input v-model="account" placeholder="请输入您的账号" height="102" type="text" :border="false" />
</view>
<view class="input-box">
<u-input v-model="code" :clearable="false" placeholder="请输入验证码" height="102" type="text" :border="false" />
<view class="code-btn" @click="getCode">{{text}}</view>
</view>
<view class="input-box">
<u-input v-model="password" :password-icon="false" placeholder="请输入密码" height="102" type="password" :border="false" />
</view>
</view>
<view class="tip">注册/登录即代表同意<view class="protocal">
《隐私政策》</view>及<view class="protocal">《服务》</view></view>
<view class="login-btn" @click="login">登录</view>
</view>
<view class="container">
<view class="bg1"></view>
<view class="bg2"></view>
<image class="logo" src="/static/logo.png" mode="" />
<view class="form">
<view class="input-box">
<u-input
v-model="account"
:clearable="false"
placeholder="请输入您的账号"
height="102"
type="text"
:border="false"
/>
</view>
<view class="input-box">
<u-input
v-model="code"
:clearable="false"
placeholder="请输入验证码"
height="102"
type="text"
:border="false"
/>
<view class="code-btn" @click="getCode">{{ text }}</view>
</view>
<view class="input-box">
<u-input
v-model="password"
:clearable="false"
:password-icon="false"
placeholder="请输入密码"
height="102"
type="password"
:border="false"
/>
</view>
</view>
<view class="tip"
>注册/登录即代表同意<view class="protocal"> 《隐私政策》</view>及<view
class="protocal"
>《服务》</view
></view
>
<view class="login-btn" @click="login">登录</view>
</view>
</template>
<script>
export default {
data() {
return {
account: 'zhangzj',//
code: '112233',
password: '123456',
text: '获取验证码',
timer: null,
isfinished: true,
};
},
onLoad(options) {
// wx.showShareMenu({
// withShareTicket: true
// })
// wx.hideShareMenu({
export default {
data() {
return {
account: "zhangzj", //
code: "112233",
password: "123456",
text: "获取验证码",
timer: null,
isfinished: true,
};
},
onLoad(options) {
// wx.showShareMenu({
// withShareTicket: true
// })
// wx.hideShareMenu({
// })
},
onShow() {},
computed: {},
methods: {
getCode() {
let that = this;
if(!that.isfinished) return;
that.getsendCode();
let seconds = 120;
that.timer = setInterval(function() {
that.isfinished = false;
that.text = seconds + "s后重新发送";
seconds--;
if (seconds <= 0) {
that.isfinished = true;
clearInterval(that.timer);
that.text = "获取验证码";
}
}, 1000);
},
getsendCode() {
// type 1:登录短信 2:定金合同短信 3:成交合同短信
this.$u.api.sendUser({body:{user:this.account}}).then((res)=>{
console.log(res)
})
},
login() {
if (this.account == "") return;
if (this.password == "") return;
let params = {
body:{
account: this.account,
password: this.password
}
};
this.$u.api.login(params).then((res) => {
console.log(res)
if(res.ErrNo=='0000'){
uni.setStorageSync('token',res.result.SESSIONID)
this.$u.vuex("vuex_token",res.result.SESSIONID);
uni.switchTab({
url: '/pages/tabs/index'
})
}
});
},
},
// onShareAppMessage(){

// })
},
onShow() {
},
computed:{
},
methods: {
getCode(){
let that = this
if(!that.isfinished) return ;
let seconds = 120
that.timer = setInterval(function(){
that.isfinished = false
that.text = seconds +'s后重新发送'
seconds--;
if(seconds<=0){
that.isfinished = true
clearInterval(that.timer);
that.text = '获取验证码'
}
},1000)
},
login(){
if(this.account=='') return ;
if(this.password=='') return ;
let params={
account:this.account,
password: this.password
}
this.$u.api.login(params).then((res)=>{
// uni.switchTab({
// url: '/pages/tabs/index'
// })
})
// },

}
},
// onShareAppMessage(){

// },

onLoad: function(options) {
},
onHide: function() {clearInterval(this.timer);},
destroyed(){
clearInterval(this.timer);
}
};
onLoad: function(options) {},
onHide: function() {
clearInterval(this.timer);
},
destroyed() {
clearInterval(this.timer);
},
};
</script>

<style lang="scss" scoped>
.container{
width: 750rpx;
height: 100vh;
.bg1{
width: 319rpx;
height: 548rpx;
position: fixed;
top: 0;
left: 0;
background: url('https://static.quhouse.com/87fb6d8e9b37462e832c782ec5f73452.png') no-repeat;
background-size: 319rpx 548rpx;
z-index: -1;
}
.bg2{
width: 542rpx;
height: 562rpx;
position: fixed;
right: 0;
bottom: 0;
background: url('https://static.quhouse.com/1677e9e68a5242c3b10b6a08ea848a4b.png') no-repeat;
background-size: 542rpx 562rpx;
z-index: -1;
}
.container {
width: 750rpx;
height: 100vh;
.bg1 {
width: 319rpx;
height: 548rpx;
position: fixed;
top: 0;
left: 0;
background: url("https://static.quhouse.com/87fb6d8e9b37462e832c782ec5f73452.png")
no-repeat;
background-size: 319rpx 548rpx;
z-index: -1;
}
.bg2 {
width: 542rpx;
height: 562rpx;
position: fixed;
right: 0;
bottom: 0;
background: url("https://static.quhouse.com/1677e9e68a5242c3b10b6a08ea848a4b.png")
no-repeat;
background-size: 542rpx 562rpx;
z-index: -1;
}

.logo{
width: 360rpx;
height: 102rpx;
margin: 260rpx 195rpx 130rpx;
}
.form{
padding: 0 75rpx;
.input-box{
width: 100%;
padding: 0 20rpx;
height: 102rpx;
line-height: 102rpx;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
justify-content: space-between;
.code-btn{
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303030;
}
}
}
.tip{
margin: 30rpx 75rpx 120rpx;
display: flex;
align-items: center;
height: 37rpx;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666;
line-height: 37rpx;
.protocal{
color: #333;
}
}
.login-btn{
margin-left: 75rpx;
width: 600rpx;
height: 98rpx;
line-height: 98rpx;
background: linear-gradient(135deg, #F9B017 0%, #FF6D25 100%);
box-shadow: 0px 2rpx 12rpx 0px rgba(255,109,37,0.5);
border-radius: 49rpx;
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #FFFFFF;
text-align: center;
}
.logo {
width: 360rpx;
height: 102rpx;
margin: 260rpx 195rpx 130rpx;
}
.form {
padding: 0 75rpx;
.input-box {
width: 100%;
padding: 0 20rpx;
height: 102rpx;
line-height: 102rpx;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
justify-content: space-between;
.code-btn {
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303030;
}
}
}
.tip {
margin: 30rpx 75rpx 120rpx;
display: flex;
align-items: center;
height: 37rpx;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666;
line-height: 37rpx;
.protocal {
color: #333;
}
}
.login-btn {
margin-left: 75rpx;
width: 600rpx;
height: 98rpx;
line-height: 98rpx;
background: linear-gradient(135deg, #f9b017 0%, #ff6d25 100%);
box-shadow: 0px 2rpx 12rpx 0px rgba(255, 109, 37, 0.5);
border-radius: 49rpx;
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #ffffff;
text-align: center;
}
}
</style>

+ 2
- 2
src/pages/tabs/me.vue Dosyayı Görüntüle

@@ -43,14 +43,14 @@
400-8113936<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
</view>
<view class="menu-item">
<view class="menu-item" @click="topage('my/networkquery')">
<view style="display:flex;">
<image class="icon" src="/static/my/net.png" mode="" />
网络查询
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view class="menu-item" @click="topage('my/modifyPassword')">
<view style="display:flex;">
<image class="icon" src="/static/my/lock.png" mode="" />
修改密码


Yükleniyor…
İptal
Kaydet