12 files modified
1 files added
| New file |
| | |
| | | import http from '@/http/api.js' |
| | | |
| | | //获取报名列表 |
| | | export const getApplyList = (params) => { |
| | | return http.request({ |
| | | url: '/blade-userPublicEnroll/userPublicEnroll/page', |
| | | method: 'GET', |
| | | params: { |
| | | ...params |
| | | } |
| | | }) |
| | | } |
| | | //获取报名详情 |
| | | export const getApplyDetail = (params) => { |
| | | return http.request({ |
| | | url: '/public_discuss/publicDiscuss/detail', |
| | | method: 'GET', |
| | | params: { |
| | | ...params |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //添加报名 |
| | | export const addApply = (params) => { |
| | | return http.request({ |
| | | url: '/blade-userPublicEnroll/userPublicEnroll/save', |
| | | method: 'POST', |
| | | data:params |
| | | }) |
| | | } |
| | | |
| | | //获取投票议题 |
| | | export const getVoteTopics = (params) => { |
| | | return http.request({ |
| | | url: '/blade-topics/topics/lists', |
| | | method: 'GET', |
| | | params: { |
| | | ...params |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //投票操作 |
| | | export const addVoteOperate = (params) => { |
| | | return http.request({ |
| | | url: '/blade-topics/topics/updateBath', |
| | | method: 'POST', |
| | | data:params |
| | | }) |
| | | } |
| | |
| | | // devUrl: 'https://sk.hubeishuiyi.cn', |
| | | // devUrl: 'http://192.168.1.156:9528', |
| | | // devUrl:'http://192.168.1.50:9528', |
| | | // devUrl: 'http://192.168.0.102:9528', |
| | | devUrl:'https://srgdjczzxtpt.com:2080/api', |
| | | devUrl: 'http://192.168.0.100:9528', |
| | | // devUrl:'https://srgdjczzxtpt.com:2080/api', |
| | | // devUrl: 'http://192.168.0.102:9528', |
| | | // devUrl: 'https://srgdjczzxtpt.com:2080/api', |
| | | minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/", |
| | |
| | | <template> |
| | | <view class=""> |
| | | <view class="notice-list" @click="navToDetail(item.id)" v-for="(item,index) in data" :key="index"> |
| | | <view class="notice-list" @click="navToDetail(item.id,item.eventType,item.pdId)" v-for="(item,index) in data" :key="index"> |
| | | <view v-if="item.url" class="notice-inner flex j-c-s-b"> |
| | | <view class="notice-list-left flex f-d-c j-c-s-b"> |
| | | <text class="notice-title f-28 fw">{{item.title}}</text> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | navToDetail(id) { |
| | | uni.navigateTo({ |
| | | url: `/subPackage/article/detail?id=${id}` |
| | | }) |
| | | navToDetail(id,type,pdId) { |
| | | if(type == 0 || type == 1){ |
| | | uni.navigateTo({ |
| | | url: `/subPackage/article/detail?id=${id}&type=${type}&pdId=${pdId}` |
| | | }) |
| | | }else { |
| | | uni.navigateTo({ |
| | | url: `/subPackage/article/detail?id=${id}` |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | "path": "detail", |
| | | "style": { |
| | | "navigationBarTitleText": "公告详情", |
| | | "navigationBarTitleText": "详情", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | |
| | | <caption-row title="社区" />
|
| | | <view class="mt-20">
|
| | | <u-grid :border="false" col="4">
|
| | | <u-grid-item @click="navigatorPage('/subPackage/article/list')">
|
| | | <u-grid-item @click="navigatorPage(`/subPackage/article/list?type=0`)">
|
| | | <u-icon name="/static/icon/nav-09.png" width="90rpx" height="70rpx"></u-icon>
|
| | | <text class="f-26 mt-10">公益报名</text>
|
| | | </u-grid-item>
|
| | | <u-grid-item @click="navigatorPage('/subPackage/article/list')">
|
| | | <u-grid-item @click="navigatorPage(`/subPackage/article/list?type=1`)">
|
| | | <u-icon name="/static/icon/nav-10.png" width="90rpx" height="70rpx"></u-icon>
|
| | | <text class="f-26 mt-10">选举调查</text>
|
| | | </u-grid-item>
|
| | |
| | | this.curSelectSite = dataList[0];
|
| | | }
|
| | | this.curHouseCode = this.curSelectSite.id
|
| | | uni.setStorageSync('curSelectSite', this.curSelectSite)
|
| | | }
|
| | | },
|
| | |
|
| | |
| | | <template> |
| | | <view class=""> |
| | | |
| | | |
| | | <view class="container"> |
| | | <view class="f-32 fw">{{detailInfo.title}}</view> |
| | | <view class="row flex j-c-s-b a-i-c c-99"> |
| | |
| | | <u-parse :content="detailInfo.content"></u-parse> |
| | | </view> |
| | | </view> |
| | | <view class="" v-if="false"> |
| | | <view class="explain-row c-main f-28"> |
| | | 报名和投票先指定好房屋 |
| | | </view> |
| | | <view class="select-row flex j-c-s-b a-i-c"> |
| | | <text class="f-28">指定房屋</text> |
| | | <view class="select-row-content flex a-i-c"> |
| | | <text class="f-26 c-99 mr-20"></text> |
| | | <u-icon name="arrow-right" color="#999"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="apply"> |
| | | <view class="flex f-d-c a-i-c"> |
| | | <view class="flex mb-20"> |
| | | <image class="apply-user" src="/static/icon/nav-02.png" mode=""></image> |
| | | <image class="apply-user" src="/static/icon/nav-02.png" mode=""></image> |
| | | <image class="apply-user" src="/static/icon/nav-02.png" mode=""></image> |
| | | |
| | | <view class="" v-if="isLoad"> |
| | | <view class="" v-if="eventType == 0 && applyInfo.openFlag == 0"> |
| | | <!-- <view class="explain-row c-main f-28"> |
| | | 报名和投票先指定好房屋 |
| | | </view> --> |
| | | <view class="select-row flex j-c-s-b a-i-c"> |
| | | <text class="f-28">房屋</text> |
| | | <view class="select-row-content flex a-i-c"> |
| | | <text class="f-26 c-99 mr-20">{{siteInfo.name}}</text> |
| | | <!-- <u-icon name="arrow-right" color="#999"></u-icon> --> |
| | | </view> |
| | | <text class="f-28 c-99">共3人</text> |
| | | </view> |
| | | <button class="apply-btn bgc-main c-ff f-30">报名</button> |
| | | </view> --> |
| | | |
| | | <view class="mt-20" > |
| | | <view class="apply"> |
| | | <view class="flex f-d-c a-i-c" v-if="applyList.length"> |
| | | <view class="flex mb-20"> |
| | | <image v-for="i in applyList" class="apply-user" src="/static/icon/user-01.png" mode="aspectFill"> |
| | | </image> |
| | | </view> |
| | | <text class="f-28 c-99">共{{applyList.length}}人</text> |
| | | </view> |
| | | <button class="apply-btn bgc-main c-ff f-30" v-if="computeEndTime > 0" |
| | | @click="handleApply()" :disabled="applyInfo.userId">{{applyInfo.userId?"已报名":"报名"}}</button> |
| | | <button class="apply-btn bgc-main c-ff f-30" v-if="computeEndTime <= 0" |
| | | :disabled="true">已结束</button> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="mt-20" v-if="eventType == 1 && voteTopicList.length"> |
| | | <view class="explain-row c-main f-28"> |
| | | 投票进行中 |
| | | </view> |
| | | <view class="vote bgc-ff"> |
| | | <view class="vote-title f-30 fw"> |
| | | 是否同意安装充电桩 |
| | | </view> |
| | | <view class=""> |
| | | <u-radio-group |
| | | iconPlacement="right" |
| | | activeColor="#017BFC" |
| | | placement="column" |
| | | > |
| | | <view class="mb-20"> |
| | | <u-radio label="同意" ></u-radio> |
| | | <view class="flex j-c-s-b a-i-c mt-10"> |
| | | <uv-line-progress :percentage="30" height="10" ></uv-line-progress> |
| | | <text class="c-99 f-28">10</text> |
| | | <view class="" v-for="(item,index) in voteTopicList" :key="index"> |
| | | <view class="vote-title f-30 fw"> |
| | | {{item.discussContent}} |
| | | </view> |
| | | <view class="" v-if="item.optionRange == 0"> |
| | | <u-radio-group iconPlacement="right" activeColor="#017BFC" placement="column" |
| | | v-model="item.selected" @change="selectOption($event,index)" :disabled="isSubmit"> |
| | | <view class="mb-20" v-for="(i,k) in item.children"> |
| | | <u-radio :label="i.optionContent" :name="i.id"></u-radio> |
| | | <view class="flex j-c-s-b a-i-c mt-10"> |
| | | <uv-line-progress height="10"></uv-line-progress> |
| | | <text class="c-99 f-28" v-if="i.number">{{i.number}}人</text> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class=""> |
| | | <u-radio label="不同意" ></u-radio> |
| | | <view class="flex j-c-s-b a-i-c mt-10"> |
| | | <uv-line-progress height="10" ></uv-line-progress> |
| | | <text class="c-99 f-28">10</text> |
| | | </u-radio-group> |
| | | </view> |
| | | <view class="" v-if="item.optionRange == 1"> |
| | | <u-checkbox-group iconPlacement="right" activeColor="#017BFC" placement="column" |
| | | v-model="item.selected" :disabled="isSubmit" @change="selectOption($event,index)"> |
| | | <view class="mb-20" v-for="(i,k) in item.children" :key="k"> |
| | | <u-checkbox :label="i.optionContent" :name="i.id"></u-checkbox> |
| | | <view class="flex j-c-s-b a-i-c mt-10"> |
| | | <!-- <uv-line-progress :percentage="10" height="10"></uv-line-progress> --> |
| | | <uv-line-progress height="10"></uv-line-progress> |
| | | <text class="c-99 f-28" v-if="i.number">{{i.number}}人</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-radio-group> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </view> |
| | | <button class="apply-btn bgc-main c-ff f-30" v-if="computeEndTime > 0" @click="submitVote()" |
| | | :disabled="isSubmit">{{isSubmit?"已提交":"提交"}}</button> |
| | | <button class="apply-btn bgc-main c-ff f-30" v-if="computeEndTime <= 0" |
| | | :disabled="true">已结束</button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <!-- <view class="action flex flex_base"> |
| | |
| | | import { |
| | | getDetail |
| | | } from '@/api/article/article.js' |
| | | import * as communityModel from "@/api/community/community.js" |
| | | import tagCell from '@/components/noticeList/tagCell.vue' |
| | | import { |
| | | jsonString |
| | | } from '../../uni_modules/uv-ui-tools/libs/function/test' |
| | | export default { |
| | | components: { |
| | | tagCell |
| | | }, |
| | | data() { |
| | | return { |
| | | params: { |
| | | id: "" |
| | | }, |
| | | eventType: null, |
| | | detailInfo: {}, |
| | | pdId: "", |
| | | siteInfo: {}, |
| | | applyList: [], |
| | | applyInfo: {}, |
| | | isLoad: false, |
| | | voteTopicList: [], |
| | | isSubmit: false // 是否已提交投票 |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | this.getDetailInfo(option.id) |
| | | this.$set(this.params, "id", option.id); |
| | | if (option.type) { |
| | | this.$set(this.params, "eventType", option.type); |
| | | this.eventType = option.type; |
| | | this.pdId = option.pdId; |
| | | this.siteInfo = uni.getStorageSync("siteInfo") |
| | | } |
| | | this.getDetailInfo() |
| | | }, |
| | | |
| | | computed: { |
| | | computeEndTime() { |
| | | let curTimestamp = new Date().getTime(); |
| | | let endTimestamp = new Date(this.applyInfo.endTime).getTime(); |
| | | return endTimestamp - curTimestamp |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | getDetailInfo(id) { |
| | | getDetail({ |
| | | id |
| | | }).then(res => { |
| | | |
| | | toNumber(val) { |
| | | return Number(val) |
| | | }, |
| | | |
| | | getDetailInfo() { |
| | | getDetail(this.params).then(res => { |
| | | this.isLoad = true; |
| | | this.detailInfo = res.data; |
| | | if (this.pdId) { |
| | | this.getApplyDetail() |
| | | } |
| | | if (this.eventType == 0) { |
| | | this.getApplyList(); |
| | | } |
| | | if (this.eventType == 1) { |
| | | this.getVoteList(); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //报名列表 |
| | | getApplyList() { |
| | | communityModel.getApplyList({ |
| | | publicDiscussId: this.pdId |
| | | }).then(res => { |
| | | console.log(res) |
| | | if (res.code == 200) { |
| | | this.applyList = res.data.records; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //报名、投票详情 |
| | | getApplyDetail() { |
| | | communityModel.getApplyDetail({ |
| | | id: this.pdId |
| | | }).then(res => { |
| | | console.log(res) |
| | | if (res.code == 200) { |
| | | this.applyInfo = res.data; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //获取投票议题 |
| | | getVoteList() { |
| | | communityModel.getVoteTopics({ |
| | | publicDiscussId: this.pdId |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | let data = res.data; |
| | | if (data.length) { |
| | | for (let i of data) { |
| | | if(i.selected){ |
| | | if (typeof i.selected == "string" && i.optionRange == 0) { |
| | | this.isSubmit = true; |
| | | i.selected = Number(i.selected) |
| | | } |
| | | if(typeof i.selected == "string" && i.optionRange == 1){ |
| | | this.isSubmit = true; |
| | | i.selected = JSON.parse(i.selected) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | this.voteTopicList = data; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //报名 |
| | | handleApply() { |
| | | communityModel.addApply({ |
| | | publicDiscussId: this.pdId |
| | | }).then(res => { |
| | | if (this.computeEndTime > 0) { |
| | | if (res.code == 200) { |
| | | uni.showToast({ |
| | | title: "操作成功" |
| | | }) |
| | | this.getApplyList(); |
| | | } |
| | | } else { |
| | | uni.showToast({ |
| | | title: "报名已结束", |
| | | icon: "none" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | selectOption(id, index) { |
| | | let item = this.voteTopicList[index]; |
| | | item.selected = id; |
| | | this.$set(this.voteTopicList, index, item); |
| | | }, |
| | | |
| | | getParams() { |
| | | let list = JSON.parse(JSON.stringify(this.voteTopicList)); |
| | | let arr = []; |
| | | for (let i of list) { |
| | | if (i.selected) { |
| | | delete i.children; |
| | | i.selected = JSON.stringify(i.selected) |
| | | arr.push(i) |
| | | } |
| | | } |
| | | return arr; |
| | | }, |
| | | |
| | | //提交投票 |
| | | submitVote() { |
| | | let data = this.getParams() |
| | | communityModel.addVoteOperate(data).then(res => { |
| | | if (res.code == 200) { |
| | | uni.showToast({ |
| | | title: "操作成功" |
| | | }) |
| | | this.$nextTick(() => { |
| | | this.getApplyDetail(); |
| | | this.getVoteList(); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | page{ |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .container { |
| | | padding: 0 30rpx; |
| | | background-color: #fff; |
| | |
| | | } |
| | | |
| | | .content { |
| | | padding-bottom:30rpx; |
| | | padding-bottom: 30rpx; |
| | | } |
| | | |
| | | .action-item { |
| | |
| | | background-color: rgb(236, 244, 255); |
| | | padding: 20rpx; |
| | | } |
| | | .select-row{ |
| | | padding:30rpx; |
| | | background-color:#fff; |
| | | |
| | | .select-row { |
| | | padding: 30rpx; |
| | | background-color: #fff; |
| | | box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2); |
| | | .select-row-content{ |
| | | flex:1; |
| | | border-top: 1px solid #f5f5f5; |
| | | |
| | | .select-row-content { |
| | | width: 80%; |
| | | justify-content: flex-end; |
| | | } |
| | | } |
| | | .apply{ |
| | | padding:30rpx; |
| | | .apply-user{ |
| | | width:80rpx; |
| | | height:80rpx; |
| | | |
| | | .apply { |
| | | padding: 30rpx; |
| | | |
| | | .apply-user { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | border-radius: 50%; |
| | | margin-right:-15rpx; |
| | | border:1px solid #fff; |
| | | margin-right: -15rpx; |
| | | border: 1px solid #fff; |
| | | } |
| | | .apply-btn{ |
| | | width:100%; |
| | | height:80rpx; |
| | | line-height: 80rpx; |
| | | margin: 30rpx auto 0; |
| | | border:none; |
| | | border-radius: 40rpx; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | .vote{ |
| | | padding:0 40rpx 30rpx; |
| | | .vote-title{ |
| | | padding:30rpx 0; |
| | | |
| | | .apply-btn { |
| | | width: 100%; |
| | | height: 80rpx; |
| | | line-height: 80rpx; |
| | | margin: 30rpx auto 0; |
| | | border: none; |
| | | border-radius: 40rpx; |
| | | |
| | | } |
| | | |
| | | .vote { |
| | | padding: 0 40rpx 30rpx; |
| | | |
| | | .vote-title { |
| | | padding: 30rpx 0; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <view class=""> |
| | | <view class="tab"> |
| | | <view class="tab" v-if="tabList.length"> |
| | | <u-tabs :list="tabList" :current="tabIndex" keyName="dictValue" @change="changeTab" |
| | | :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}"></u-tabs> |
| | | </view> |
| | | <view class="list bgc-ff"> |
| | | <notice-list :data="list" /> |
| | | <notice-list :data="list" /> |
| | | </view> |
| | | <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line /> |
| | | </view> |
| | |
| | | } from "@/api/article/article.js"; |
| | | import noticeList from "@/components/noticeList/noticeList.vue" |
| | | export default { |
| | | components:{ |
| | | components: { |
| | | noticeList |
| | | }, |
| | | data() { |
| | |
| | | tabIndex: 0, |
| | | list: [], |
| | | currentPage: 1, |
| | | loadingStatus: 'nomore' |
| | | loadingStatus: 'nomore', |
| | | eventType: "" |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.getCateList() |
| | | |
| | | onLoad(option) { |
| | | if (option.type) { |
| | | this.eventType = option.type; |
| | | if (option.type == 0) { |
| | | this.tabList = [{ |
| | | dictKey: "", |
| | | dictValue: "公益报名" |
| | | }] |
| | | } else { |
| | | this.tabList = [{ |
| | | dictKey: "", |
| | | dictValue: "选举调查" |
| | | }] |
| | | } |
| | | this.getNoticeList() |
| | | } else { |
| | | this.getCateList() |
| | | } |
| | | }, |
| | | onReachBottom() { |
| | | this.currentPage++ |
| | |
| | | |
| | | getCateList() { |
| | | getCategory({ |
| | | parentId: '1722966265111248897' |
| | | parentId: '1722966265111248897', |
| | | }).then(res => { |
| | | console.log(res) |
| | | let data = res.data; |
| | |
| | | const param = { |
| | | size: 10, |
| | | current: this.currentPage, |
| | | articleType: this.tabId |
| | | articleType: this.tabId, |
| | | eventType: this.eventType |
| | | } |
| | | const res = await getPage(param) |
| | | const { |
| | |
| | | this.loadingStatus = 'nomore' |
| | | |
| | | }, |
| | | navTo(id) { |
| | | this.$u.func.globalNavigator(`detail?id=${id}`, "navTo") |
| | | navTo(id, type) { |
| | | this.$u.func.globalNavigator(`detail?id=${id}&type=${type}`, "navTo") |
| | | } |
| | | } |
| | | } |
| | |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .tab { |
| | | width: 100%; |
| | | height: 88rpx; |
| | |
| | | box-sizing: border-box; |
| | | z-index: 999; |
| | | } |
| | | |
| | | .list { |
| | | margin-top: 108rpx; |
| | | padding:0 30rpx; |
| | | padding: 0 30rpx; |
| | | } |
| | | </style> |
| | |
| | | this.info.type = option.type
|
| | | },
|
| | | onShow() {
|
| | | this.curSelectSite = uni.getStorageSync('curSelectSite')
|
| | | this.curSelectSite = uni.getStorageSync('siteInfo')
|
| | | this.info.addressCode = this.curSelectSite.id |
| | | console.log(this.curSelectSite);
|
| | | },
|
| | |
| | | <template> |
| | | <view class=""> |
| | | <u-navbar height="48" :autoBack="true" safeAreaInsetTop placeholder bgColor="transparent" leftIconColor="#fff"> |
| | | <u-navbar height="48" :autoBack="true" safeAreaInsetTop placeholder bgColor="transparent" leftIconColor="#fff"> |
| | | </u-navbar> |
| | | <view class="top"> |
| | | <image class="top-img" src="/static/img/repair-bg.png" mode="aspectFill"></image> |
| | | </view> |
| | | |
| | | |
| | | <view class="container"> |
| | | <view class="c-ff f-36">请选择您需要的服务</view> |
| | | <view class="serve-box bgc-ff mb-20 flex j-c-s-b a-i-c"> |
| | | <view class="flex a-i-c"> |
| | | <u-icon name="/static/icon/nav-09.png" width="91rpx" height="70rpx"></u-icon> |
| | | <u-icon name="/static/icon/nav-09.png" width="91rpx" height="70rpx"></u-icon> |
| | | <view class="flex f-d-c ml-40"> |
| | | <text class="f-36">总申请</text> |
| | | <view class="flex a-i-c"> |
| | | <text class="f-48 c-blue fw mr-6">{{statistic.total}}</text> |
| | | <text class="f-48 c-blue fw mr-6">50</text> |
| | | <text class="f-24 c-99">件</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="flex a-i-c"> |
| | | <u-icon name="/static/icon/nav-10.png" width="91rpx" height="70rpx"></u-icon> |
| | | <u-icon name="/static/icon/nav-10.png" width="91rpx" height="70rpx"></u-icon> |
| | | <view class="flex f-d-c ml-40"> |
| | | <text class="f-36">已处理</text> |
| | | <view class="flex a-i-c"> |
| | | <text class="f-48 c-green fw mr-6">{{statistic.handle}}</text> |
| | | <text class="f-48 c-green fw mr-6">50</text> |
| | | <text class="f-24 c-99">件</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <view class="site-box bgc-ff flex"> |
| | | <view class="flex a-i-c"> |
| | | <u-icon name="map-fill" color="#AAAAAA"></u-icon> |
| | | <text class="f-28 c-aa ml-20">当前小区:</text> |
| | | </view> |
| | | |
| | | <text class="address f-28">{{ curSelectSite.name }}</text> |
| | | |
| | | <text class="address f-28">万达华府26栋1903室 万达华府26栋1903室</text> |
| | | </view> |
| | | |
| | | |
| | | <view class="nav flex flex-wrap j-c-s-b"> |
| | | |
| | | <view class="nav-item" v-for="(i,k) in navList" :key="k" @click="navTo(i)"> |
| | | |
| | | <view class="nav-item" v-for="(i,k) in navList" :key="k" @click="navTo(i.path)"> |
| | | <image class="nav-item-bg" :src="i.bgImg" mode="aspectFill"></image> |
| | | <view class="nav-item-inner flex f-d-c"> |
| | | <text class="f-32 mb-30">{{i.title}}</text> |
| | | <button class="item-btn" :style="{backgroundColor:i.background}">立即上报</button> |
| | | <button class="item-btn" :style="{backgroundColor:i.background}">立即上报</button> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getStatistics |
| | | } from '@/api/task/taskReportForRepairs' |
| | | export default { |
| | | data() { |
| | | data(){ |
| | | return { |
| | | statistic: { |
| | | total: 0, |
| | | handle: 0, |
| | | }, |
| | | curSelectSite: {}, |
| | | navList: [{ |
| | | title: "公共维修", |
| | | type: 1, |
| | | bgImg: "/static/icon/nav-bg-06.png", |
| | | path: `addRepair`, |
| | | background: "#63C875" |
| | | navList:[ |
| | | { |
| | | title:"公共维修", |
| | | bgImg:"/static/icon/nav-bg-06.png", |
| | | path:"addRepair", |
| | | background:"#63C875" |
| | | }, |
| | | { |
| | | title: "居家维修", |
| | | type: 2, |
| | | bgImg: "/static/icon/nav-bg-07.png", |
| | | path: "addRepair", |
| | | background: "#4D98E2" |
| | | title:"居家维修", |
| | | bgImg:"/static/icon/nav-bg-07.png", |
| | | path:"", |
| | | background:"#4D98E2" |
| | | }, |
| | | { |
| | | title: "矛盾纠纷", |
| | | type: 3, |
| | | bgImg: "/static/icon/nav-bg-08.png", |
| | | path: "addRepair", |
| | | background: "#EC7E51" |
| | | title:"矛盾纠纷", |
| | | bgImg:"/static/icon/nav-bg-08.png", |
| | | path:"", |
| | | background:"#EC7E51" |
| | | }, |
| | | { |
| | | title: "投诉举报", |
| | | type: 4, |
| | | bgImg: "/static/icon/nav-bg-09.png", |
| | | path: "addRepair", |
| | | background: "#F4B862" |
| | | title:"投诉举报", |
| | | bgImg:"/static/icon/nav-bg-09.png", |
| | | path:"", |
| | | background:"#F4B862" |
| | | }, |
| | | { |
| | | title: "企业商户上报", |
| | | type: 5, |
| | | bgImg: "/static/icon/nav-bg-09.png", |
| | | path: "addRepair", |
| | | background: "#F4B862" |
| | | }, |
| | | |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | computed: { |
| | | |
| | | }, |
| | | onShow() { |
| | | this.getStatistics() |
| | | this.curSelectSite = uni.getStorageSync('curSelectSite') |
| | | console.log(this.curSelectSite); |
| | | }, |
| | | |
| | | methods: { |
| | | navTo(item) { |
| | | if (item.path) { |
| | | let url = item.path + "?title=" + item.title + "&type=" + item.type |
| | | this.$u.func.globalNavigator(url, "navTo") |
| | | methods:{ |
| | | navTo(path){ |
| | | if(path){ |
| | | this.$u.func.globalNavigator(path, "navTo") |
| | | } |
| | | }, |
| | | |
| | | getStatistics() { |
| | | getStatistics().then(res => { |
| | | this.statistic = res.data |
| | | }) |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | page { |
| | | width: 100%; |
| | | height: 100%; |
| | | page{ |
| | | width:100%; |
| | | height:100%; |
| | | } |
| | | |
| | | .top { |
| | | width: 100%; |
| | | height: 659rpx; |
| | | background: linear-gradient(180deg, #017BFC 0%, rgba(1, 123, 252, 0) 100%); |
| | | .top{ |
| | | width:100%; |
| | | height:659rpx; |
| | | background: linear-gradient(180deg, #017BFC 0%, rgba(1,123,252,0) 100%); |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | |
| | | .top-img { |
| | | width: 100%; |
| | | height: 659rpx; |
| | | top:0; |
| | | left:0; |
| | | .top-img{ |
| | | width:100%; |
| | | height:659rpx; |
| | | } |
| | | } |
| | | |
| | | .container { |
| | | width: 100%; |
| | | .container{ |
| | | width:100%; |
| | | padding: 0 30rpx; |
| | | position: fixed; |
| | | box-sizing: border-box; |
| | | top: 130rpx; |
| | | left: 0; |
| | | top:130rpx; |
| | | left:0; |
| | | z-index: 100; |
| | | |
| | | .serve-box { |
| | | width: 100%; |
| | | height: 213rpx; |
| | | .serve-box{ |
| | | width:100%; |
| | | height:213rpx; |
| | | border-radius: 8rpx; |
| | | margin-top: 30rpx; |
| | | margin-top:30rpx; |
| | | padding: 0 60rpx 0 40rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .f-48 { |
| | | font-size: 48rpx; |
| | | .f-48{ |
| | | font-size:48rpx; |
| | | } |
| | | |
| | | .c-blue { |
| | | color: #677CF8; |
| | | |
| | | .c-blue{ |
| | | color:#677CF8; |
| | | |
| | | } |
| | | |
| | | .c-green { |
| | | color: #30D17C; |
| | | .c-green{ |
| | | color:#30D17C; |
| | | } |
| | | |
| | | .ml-40 { |
| | | margin-left: 40rpx; |
| | | .ml-40{ |
| | | margin-left:40rpx; |
| | | } |
| | | |
| | | .site-box { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | .site-box{ |
| | | width:100%; |
| | | padding:30rpx; |
| | | box-sizing: border-box; |
| | | border-radius: 4rpx; |
| | | |
| | | .c-aa { |
| | | color: #aaa; |
| | | .c-aa{ |
| | | color:#aaa; |
| | | } |
| | | |
| | | .address { |
| | | width: 60%; |
| | | margin-left: 25rpx; |
| | | .address{ |
| | | width:60%; |
| | | margin-left:25rpx; |
| | | } |
| | | } |
| | | |
| | | .nav { |
| | | width: 100%; |
| | | |
| | | .nav-item, |
| | | .nav-item-bg, |
| | | .nav-item-inner { |
| | | width: 330rpx; |
| | | height: 167rpx; |
| | | .nav{ |
| | | width:100%; |
| | | .nav-item,.nav-item-bg,.nav-item-inner{ |
| | | width:330rpx; |
| | | height:167rpx; |
| | | } |
| | | |
| | | .nav-item { |
| | | .nav-item{ |
| | | position: relative; |
| | | margin-top: 30rpx; |
| | | margin-top:30rpx; |
| | | } |
| | | |
| | | .nav-item-inner { |
| | | padding: 30rpx 30rpx 0; |
| | | .nav-item-inner{ |
| | | padding:30rpx 30rpx 0; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | |
| | | top:0; |
| | | left:0; |
| | | |
| | | } |
| | | |
| | | .item-btn { |
| | | width: 125rpx; |
| | | height: 42rpx; |
| | | .item-btn{ |
| | | width:125rpx; |
| | | height:42rpx; |
| | | line-height: 42rpx; |
| | | border-radius: 20rpx; |
| | | color: #fff; |
| | | font-size: 22rpx; |
| | | padding: 0; |
| | | margin: 0; |
| | | color:#fff; |
| | | font-size:22rpx; |
| | | padding:0; |
| | | margin:0; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | </style> |
| | |
| | | <view>{{ curSelectSite.name }}/{{housingName}}{{buildingName}}</view>
|
| | | </view>
|
| | | <view class="h0 flex-1 build-list-box content">
|
| | | <u-collapse :value="buildingList.length == 1?['0']:''">
|
| | | <u-collapse :value="buildingList.length == 1?['0']:''">
|
| | | <u-collapse-item v-if="isShowBuild" style="border: none;" :name="index" :title="item.unitName"
|
| | | :icon="'/static/icon/group.png'" v-for="(item, index) in buildingList" :key="index">
|
| | | <!-- :title="item.unitName" -->
|
| | |
| | | <view class="room-content">
|
| | | <u-grid class="flex flex-wrap" col="2" :border="true">
|
| | | <u-grid-item v-for="(scItem, scIndex) in cItem.children" :key="scItem.id"
|
| | | @click="pushPage(scIndex,cItem.children)">
|
| | | <view class="room-box flex f-d-c" >
|
| | | @click="pushPage(scIndex,cItem.children)">
|
| | | <view class="room-box flex f-d-c">
|
| | | <view class="flex a-i-c j-c-s-b">
|
| | | <view class="l">
|
| | | <u-icon name="/static/icon/person.png" size="16"></u-icon>
|
| | |
| | | 主
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | <view v-show="!!scItem.roleType == 1">
|
| | | <u-icon name="/static/icon/selected.png" size="16"></u-icon>
|
| | | </view>
|
| | |
| | |
|
| | | <view class="flex floor-info-box">
|
| | | <view class="l flex proprietor-box">
|
| | | {{scItem.realName}}
|
| | | {{scItem.realName || ""}}
|
| | | </view>
|
| | | <view class="r floor-box">
|
| | | {{scItem.houseNo}}
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | </view>
|
| | | </u-grid-item>
|
| | | </u-grid>
|
| | |
| | |
|
| | | },
|
| | | onShow() {
|
| | | this.curSelectSite = uni.getStorageSync('curSelectSite')
|
| | | this.curSelectSite = uni.getStorageSync('siteInfo')
|
| | | },
|
| | | mounted() {
|
| | | this.getBuildingList()
|
| | |
| | | })
|
| | | }
|
| | | },
|
| | | pushPage(index,item) {
|
| | | pushPage(index, item) {
|
| | | let code = item[index].addressCode;
|
| | | let url = `/subPackage/house/roomDetails/index?id=${code}`
|
| | | this.$u.func.globalNavigator(url, "navTo")
|
| | |
| | | width: 0;
|
| | | flex: 1;
|
| | | padding: 12rpx;
|
| | |
|
| | | .room-box {
|
| | | padding: 10rpx;
|
| | | justify-content: center;
|
| | |
| | |
|
| | | },
|
| | | onShow() {
|
| | | this.curSelectSite = uni.getStorageSync('curSelectSite')
|
| | | this.curSelectSite = uni.getStorageSync('siteInfo')
|
| | | },
|
| | | mounted() {
|
| | | this.getHouseInfo()
|
| | |
| | | <u-icon name="arrow-right" color="#999"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="nav-item flex j-c-s-b a-i-c" @click="navTo('/subPackage/task/taskList')"> |
| | | <text class="f-28">标签报事</text> |
| | | <view class="flex"> |
| | | <block v-if="comprehensiveTask > 0"> |
| | | <text class="f-28 c-99">待处理</text> |
| | | <view class="dot bgc-main">{{countInfo.comprehensiveTask}}</view> |
| | | </block> |
| | | <u-icon name="arrow-right" color="#999"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="nav-item flex j-c-s-b a-i-c"> |
| | | <text class="f-28">工作日志</text> |
| | | <view class="flex"> |
| | |
| | | </view> |
| | | <view class="item-row flex a-i-c j-c-s-b"> |
| | | <text class="f-28">地址</text> |
| | | <text class="f-28 c-66">{{ item.addressName }}</text> |
| | | <text class="address f-28 c-66">{{ item.addressName }}</text> |
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | |
|
| | | .item-row {
|
| | | padding: 10rpx 0;
|
| | |
|
| | | .address {
|
| | | width: 65%;
|
| | | width: 75%;
|
| | | }
|
| | | }
|
| | | }
|