Browse Source

登录接口联调,用户详情接入,搜索功能实现,新加组织树页面

dev
mk 1 year ago
parent
commit
4e2766b20d
  1. 2
      src/api/user.js
  2. 12
      src/router/index.js
  3. 11
      src/router/router.config.js
  4. 2
      src/store/modules/app.js
  5. 125
      src/views/home/index.vue
  6. 1
      src/views/login/index.vue
  7. 6
      src/views/search/index.less
  8. 126
      src/views/search/index.vue
  9. 22
      src/views/selectAgency/index.vue

2
src/api/user.js

@ -21,7 +21,7 @@ export function checkWxmpRegister(params) {
// 获取用户信息
export function getUserWechatByUserId(params) {
return request({
url: `/auth/publicuser/getUserWechatByUserId`,
url: `/auth/loginH5/resiH5/getUserInfoByToken`,
method: 'get',
message: '获取用户信息中...',
params

12
src/router/index.js

@ -5,7 +5,7 @@ import { constantRouterMap } from './router.config.js'
import { checkWxmpRegister, login } from '@/api/user'
import { title } from '@/config'
const whiteList = ['/login', '/register', '/errorPage','/']
const whiteList = ['/login', '/register', '/errorPage','/selectAgency']
const originalPush = Router.prototype.push
Router.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
@ -61,11 +61,11 @@ router.beforeEach((to, from, next) => {
} else {
store.commit('SET_APP_ID', localStorage.getItem('appId'))
}
if ((!localStorage.getItem('appId') && to.path !== '/errorPage') || to.path === '/home') {
if (!localStorage.getItem('appId') && to.path !== '/errorPage') {
if(to.path === '/errorPage'){
next('/errorPage')
}else{
next('/home')
next('/')
}
} else {
if (to.params.type) {
@ -90,9 +90,9 @@ router.beforeEach((to, from, next) => {
}
})
})
} else {
if (getQueryStringByName('code') && to.path!=='/') {
login({ wxCode: getQueryStringByName('code')}).then(res => {
} else {
if (getQueryStringByName('code') ) {
login({ wxCode: getQueryStringByName('code'),appId:'wx1078fa1e99424de9'}).then(res => {
localStorage.setItem('token', res.token)
let state = decodeURIComponent(getQueryStringByName('state'))
state = state.replace(/[\\\b\f\n\r\t]/g, '')

11
src/router/router.config.js

@ -67,5 +67,16 @@ export const constantRouterMap = [
name: 'errorPage',
component: () => import('@/views/errorPage'),
meta: { title: '错误', keepAlive: false }
},
{
path: '/search',
name: 'search',
component: () => import('@/views/search'),
meta: { title: '搜索', keepAlive: false }
},{
path: '/selectAgency',
name: 'selectAgency',
component: () => import('@/views/selectAgency'),
meta: { title: '选择所在社区', keepAlive: false }
}
]

2
src/store/modules/app.js

@ -14,7 +14,7 @@ const mutations = {
}
const actions = {
// 设置是否注册
getUserInfo({ commit }) {
getUserInfo({ commit}) {
return new Promise((resolve, reject) => {
if (Object.keys(state.userInfo).length) {
resolve()

125
src/views/home/index.vue

@ -9,8 +9,9 @@
</div>
<div class="flex flex-center2">
<van-search v-model="searchKey" placeholder="请输入搜索关键词" shape="round" background="#3974f6"
style="width: 170px;" />
<img src="@/assets/images/icons/mine.png" class="img_20 " alt="">
style="width: 170px;" @search="$router.push({ path: '/search', query: { searchKey: searchKey } })" />
<img src="@/assets/images/icons/mine.png"
@click="$router.push({ path: '/mine', query: { searchKey: searchKey } })" class="img_20 " alt="">
</div>
</div>
<div class="swipe">
@ -42,10 +43,10 @@
</div>
</div>
<div class="flex flex-centr2 flex-mean m-top18">
<div class="flex-y flex flex-center1 flex-center2 nav font-size13 " v-for="(item,index) in tabList">
<img :src="item.imgSrc"
alt="">
<span>{{item.title}}</span>
<div class="flex-y flex flex-center1 flex-center2 nav font-size13 "
v-for="(item, index) in tabList">
<img :src="item.imgSrc" alt="">
<span>{{ item.title }}</span>
</div>
</div>
</div>
@ -54,17 +55,18 @@
<span>社区活动</span>
<span>更多</span>
</div>
<div class="activity_content flex" v-for="(item,index) in activityList">
<div class="activity_content flex" v-for="(item, index) in activityList">
<img :src="item.imgSrc" alt="" class="mr10" style="width: 75px;height: 95px;">
<div class="flex flex-y flex1 flex-end" style="overflow: hidden;">
<div class="van-ellipsis">{{item.title}}</div>
<div class="address font-size14 van-ellipsis gray">地点{{item.address}}</div>
<div class="time gray font-size14">时间{{item.date}}</div>
<div class="van-ellipsis">{{ item.title }}</div>
<div class="address font-size14 van-ellipsis gray">地点{{ item.address }}</div>
<div class="time gray font-size14">时间{{ item.date }}</div>
<div class="flex flex-end">
<div>
<span>报名人数</span> <span class="font-size18 orange">{{item.resiNum}}</span>/<span class="font-size14">{{item.total}}</span>
<span>报名人数</span> <span class="font-size18 orange">{{ item.resiNum }}</span>/<span
class="font-size14">{{ item.total }}</span>
</div>
<van-button type="info"size="small" round >报名</van-button>
<van-button type="info" size="small" round>报名</van-button>
</div>
</div>
</div>
@ -74,16 +76,19 @@
<span>居民议事</span>
<span>更多</span>
</div>
<div class="activity_content flex" v-for="(item,index) in eventList">
<div class="activity_content flex" v-for="(item, index) in eventList">
<div class="flex flex-y flex1 flex-end" style="overflow: hidden;">
<span class="van-multi-ellipsis--l2">
{{item.title}}
</span>
<div class="flex flex-end flex-center gray m-top10 font-size13">
<div class="flex flex-center"><img src="@/assets/images/icons/resi.png" class="img_16 m-right7" alt=""><span>参与 {{item.total}}</span></div>
<div class="flex flex-center"><img src="@/assets/images/icons/support.png" alt="" class="img_16 m-right7"><span>支持 {{item.support}}</span></div>
<div class="flex flex-center"><img src="@/assets/images/icons/oppose.png" alt="" class="img_16 m-right7"><span>反对 {{item.oppose}}</span></div>
</div>
<span class="van-multi-ellipsis--l2">
{{ item.title }}
</span>
<div class="flex flex-end flex-center gray m-top10 font-size13">
<div class="flex flex-center"><img src="@/assets/images/icons/resi.png"
class="img_16 m-right7" alt=""><span>参与 {{ item.total }}</span></div>
<div class="flex flex-center"><img src="@/assets/images/icons/support.png" alt=""
class="img_16 m-right7"><span>支持 {{ item.support }}</span></div>
<div class="flex flex-center"><img src="@/assets/images/icons/oppose.png" alt=""
class="img_16 m-right7"><span>反对 {{ item.oppose }}</span></div>
</div>
</div>
</div>
</div>
@ -97,63 +102,63 @@ export default {
data() {
return {
searchKey: null,//
tabList:[
tabList: [
{
imgSrc:require('@/assets/images/nav/1.png'),
title:'社区讯息',
path:'/notice'
imgSrc: require('@/assets/images/nav/1.png'),
title: '社区讯息',
path: '/notice'
},
{
imgSrc:require('@/assets/images/nav/2.png'),
title:'社区活动',
path:'/notice'
imgSrc: require('@/assets/images/nav/2.png'),
title: '社区活动',
path: '/notice'
},
{
imgSrc:require('@/assets/images/nav/3.png'),
title:'居民议事',
path:'/notice'
imgSrc: require('@/assets/images/nav/3.png'),
title: '居民议事',
path: '/notice'
},
{
imgSrc:require('@/assets/images/nav/4.png'),
title:'满意度测评',
path:'/notice'
imgSrc: require('@/assets/images/nav/4.png'),
title: '满意度测评',
path: '/notice'
},
{
imgSrc:require('@/assets/images/nav/5.png'),
title:'可享服务',
path:'/notice'
imgSrc: require('@/assets/images/nav/5.png'),
title: '可享服务',
path: '/notice'
}
],
activityList:[
activityList: [
{
title:'社区活动测试测试测试时杀死还是上海市普陀区金沙江路',
address:'上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路',
date:'2021-09-22',
imgSrc:require('@/assets/images/zhishu1.png'),
resiNum:10,
total:50
title: '社区活动测试测试测试时杀死还是上海市普陀区金沙江路',
address: '上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路',
date: '2021-09-22',
imgSrc: require('@/assets/images/zhishu1.png'),
resiNum: 10,
total: 50
},
{
title:'社区活动测试测试测试时杀死还是上海市普陀区金沙江路',
address:'上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路',
date:'2021-09-22',
imgSrc:require('@/assets/images/zhishu1.png'),
resiNum:10,
total:50
title: '社区活动测试测试测试时杀死还是上海市普陀区金沙江路',
address: '上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路',
date: '2021-09-22',
imgSrc: require('@/assets/images/zhishu1.png'),
resiNum: 10,
total: 50
}
],
eventList:[
eventList: [
{
total:100,
support:50,
title:'社区活动测试测试测试时杀死社区活动测试测试测试时杀死还是上海市普陀区金沙江路还是上海市普陀区金沙江路',
oppose:10
total: 100,
support: 50,
title: '社区活动测试测试测试时杀死社区活动测试测试测试时杀死还是上海市普陀区金沙江路还是上海市普陀区金沙江路',
oppose: 10
},
{
total:100,
support:50,
title:'社区活动测试测试测试时杀死社区活动测试测试测试时杀死还是上海市普陀区金沙江路还是上海市普陀区金沙江路',
oppose:10
total: 100,
support: 50,
title: '社区活动测试测试测试时杀死社区活动测试测试测试时杀死还是上海市普陀区金沙江路还是上海市普陀区金沙江路',
oppose: 10
}
]
};
@ -167,7 +172,7 @@ export default {
if (code === 0) {
console.log(data);
}
}
},
},
components: {},
computed: {},

1
src/views/login/index.vue

@ -18,7 +18,6 @@ export default {
},
methods: {
login() {
console.log('login')
let state = {
path: this.$route.query.redirect ? this.$route.query.redirect : '',
query: this.$route.query.params ? this.$route.query.params : ''

6
src/views/search/index.less

@ -0,0 +1,6 @@
.search_box{
background-color: #fff;
}
section{
margin: 10px 10px 0;
}

126
src/views/search/index.vue

@ -0,0 +1,126 @@
<template>
<div>
<div class="flex flex-center2 search_box">
<van-search v-model="searchKey" shape="round" background="#fffff" placeholder="请输入搜索关键词" class="flex1" @blur="handelBlurSearch" />
<van-button type="info" round size="small" class="m-right10" @click
="handelClickSearch">搜索</van-button>
</div>
<span v-if="searchFlag" class="p-12 flex">按关键字“<span class="blue">{{searchKey}}</span>搜索到的结果如下</span>
<section class='card m-top10' v-else>
<div class="title"><span>热门搜索</span></div>
<van-button type="default" round size="small" class="m-right10 m-top10">测试</van-button>
</section>
<div class="card" v-if="searchFlag">
<van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="getTable">
<van-cell v-for="(item, index) in tableList" :key="index" :label="item.date">
<template #title>
<span v-html="textHighlighting(item.title, searchKey)" class="van-multi-ellipsis--l2"></span>
</template>
</van-cell>
</van-list>
</div>
</div>
</template>
<script>
export default {
data() {
return {
searchKey:this.$route.query.searchKey || null,
loading: false,
finished: false,
searchFlag:false,
tableList: [
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策2024年青岛市北区最新养老补贴发放政策2024年青岛市北区最新养老补贴发放政策2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
},
{
title: '2024年青岛市北区最新养老补贴发放政策',
date: '2022-09-01'
}
],
pageSize:20,
pageNo:1
};
},
created() {
if(this.$route.query.searchKey){
this.searchFlag = true;
}
},
methods: {
handelBlurSearch(){
this.searchFlag = this.searchKey?true:false;
},
//
getTable() {
setTimeout(() => {
for (let i = 0; i < 10; i++) {
this.tableList.push({title:'这是新加的市北区',date:'2024-10-5'});
}
console.log(this.tableList);
//
this.loading = false;
//
if (this.tableList.length >= 40) {
this.finished = true;
}
}, 1000);
},
handelClickSearch(){
this.searchFlag = true;
this.pageNo = 1;
this.getTable();
}
},
components: { },
computed: {
textHighlighting(textItem, searchText){
return (textItem,searchText) =>{
const searchTextArr = searchText.split('')
const textItemArr = textItem.split('')
const result = textItemArr.map(item => {
return searchTextArr.includes(item) ? `<span class="blue">${item}</span>` : item
})
return result.join('')
}
},
},
watch: { },
}
</script>
<style lang='less' scoped>
@import './index';
</style>

22
src/views/selectAgency/index.vue

@ -0,0 +1,22 @@
<template>
<div class=''>
<div>123456789</div>
</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='less'>
</style>
Loading…
Cancel
Save