13 files modified
5 files added
| New file |
| | |
| | | import http from '@/http/api.js' |
| | | |
| | | //报事报修数据统计 (数据驾驶舱) |
| | | export const getReportStatistics = (params) => { |
| | | return http.request({ |
| | | url: 'blade-taskReportForRepairs/taskReportForRepairs/getReportForStatistics', |
| | | method: 'GET', |
| | | params: { |
| | | ...params |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //获取社区概况数据统计 (数据驾驶舱) |
| | | export const getHouseStatistics =(param)=>{ |
| | | return http.request({ |
| | | url: 'blade-house/house/getHouseStatistics', |
| | | method: 'GET', |
| | | params: param |
| | | }) |
| | | } |
| | | |
| | | // 获取住户数据统计 (数据驾驶舱) |
| | | export const getHouseholdStatistics = (params) => { |
| | | return http.request({ |
| | | url: 'blade-household/household/getHouseHoldStatistics', |
| | | method: 'GET', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | | // 获取网格物业人员数据统计 (数据驾驶舱) |
| | | export const getGridStatistics = (params) => { |
| | | return http.request({ |
| | | url: 'blade-gridman/gridman/getGridStatistics', |
| | | method: 'GET', |
| | | params: params |
| | | }) |
| | | } |
| | |
| | | // 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: 'http://192.168.0.102:9528', |
| | | // devUrl: 'https://srgdjczzxtpt.com:2080/api', |
| | | minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/", |
| | | // minioBaseUrl:"http://192.168.0.103:9528/", |
| | |
| | | deletePic(event,key="images") { |
| | | this.form[key].splice(event.index, 1) |
| | | }, |
| | | |
| | | deletePics(event,key) { |
| | | console.log(event,key); |
| | | this[key].splice(event.index, 1) |
| | | }, |
| | | |
| | | showLoading() { |
| | | uni.showLoading({ |
| | | mask: true, |
| | |
| | | //数据驾驶舱 |
| | | { |
| | | "root": "subPackage/statistics", |
| | | "pages": [ |
| | | { |
| | | "path": "index", |
| | | "style": { |
| | | "navigationBarTitleText": "数据驾驶舱", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | "pages": [{ |
| | | "path": "index", |
| | | "style": { |
| | | "navigationBarTitleText": "数据驾驶舱", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | ] |
| | | }] |
| | | }, |
| | | //我的 |
| | | { |
| | |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | } |
| | | |
| | | |
| | | ] |
| | | }, |
| | | //圈子 |
| | | { |
| | | "root": "subPackage/circle", |
| | | "pages":[ |
| | | { |
| | | "path":"detail", |
| | | "style": { |
| | | "navigationBarTitleText": "详情", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | "pages": [{ |
| | | "path": "detail", |
| | | "style": { |
| | | "navigationBarTitleText": "详情", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | ] |
| | | }] |
| | | }, |
| | | |
| | | //公告 |
| | |
| | | //标签 |
| | | { |
| | | "root": "subPackage/label", |
| | | "pages": [ |
| | | { |
| | | "pages": [{ |
| | | "path": "index", |
| | | "style": { |
| | | "navigationBarTitleText": "标签事件", |
| | |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | },{ |
| | | }, { |
| | | "path": "bail", |
| | | "style": { |
| | | "navigationBarTitleText": "取保候审", |
| | |
| | | }, |
| | | //我的任务 |
| | | { |
| | | "root":"subPackage/task", |
| | | "pages": [ |
| | | { |
| | | "root": "subPackage/task", |
| | | "pages": [{ |
| | | "path": "index", |
| | | "style": { |
| | | "navigationBarTitleText": "我的任务", |
| | |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | } , |
| | | }, |
| | | { |
| | | "path": "taskList", |
| | | "style": { |
| | |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | } , |
| | | }, |
| | | { |
| | | "path": "workLogList", |
| | | "style": { |
| | |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | //工作台 |
| | |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "root": "subPackage/grid", |
| | | "pages": [{ |
| | | "path": "publicSecurity", |
| | | "style": { |
| | | "navigationBarTitleText": "公安网格", |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "comprehensive", |
| | | "style": { |
| | | "navigationBarTitleText": "综治网格", |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "tenement", |
| | | "style": { |
| | | "navigationBarTitleText": "物业", |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "comment", |
| | | "style": { |
| | | "navigationBarTitleText": "留言", |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | "globalStyle": { |
| | |
| | | }, |
| | | { |
| | | "pagePath": "pages/circle/index", |
| | | "iconPath": "static/img/tabbar-02.png", |
| | | "iconPath": "static/img/tabbar-02.png", |
| | | "selectedIconPath": "static/img/tabbar-02-selected.png", |
| | | "text": "圈子" |
| | | }, |
| | |
| | | icon: "error"
|
| | | })
|
| | | }
|
| | | else if (path == "/subPackage/statistics/index") {
|
| | | uni.showToast({
|
| | | title: "功能开发中~",
|
| | | icon: "none"
|
| | | })
|
| | | } |
| | | // else if (path == "/subPackage/statistics/index") {
|
| | | // uni.showToast({
|
| | | // title: "功能开发中~",
|
| | | // icon: "none"
|
| | | // })
|
| | | // } |
| | | else {
|
| | | this.$u.func.globalNavigator(`${path}?houseCode=${this.curHouseCode}`, "navTo")
|
| | | }
|
| New file |
| | |
| | | <template> |
| | | <view class="container"> |
| | | <view class="content"> |
| | | <u-textarea v-model="content" placeholder="请输入内容" ></u-textarea> |
| | | </view> |
| | | <button class="submit-btn bgc-main c-ff f-30" @click="submitInfo">提交</button> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { addComment} from "@/api/article/article.js" |
| | | export default{ |
| | | data(){ |
| | | return { |
| | | content:"", |
| | | articleId:"" |
| | | } |
| | | }, |
| | | onLoad(option){ |
| | | this.articleId = option.id; |
| | | }, |
| | | methods:{ |
| | | submitInfo(){ |
| | | if(!this.content)return |
| | | addComment({ |
| | | content:this.content, |
| | | articleId:this.articleId |
| | | }).then(res=>{ |
| | | if(res.code == 200){ |
| | | uni.showToast({ |
| | | title:"提交成功!" |
| | | }) |
| | | uni.$emit("refreshComment") |
| | | setTimeout(()=>{ |
| | | uni.navigateBack(); |
| | | },1000) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .container{ |
| | | padding:30rpx 30rpx 0; |
| | | } |
| | | .content{ |
| | | margin-bottom:50rpx; |
| | | } |
| | | .submit-btn{ |
| | | width:100%; |
| | | height:80rpx; |
| | | line-height:80rpx; |
| | | border:none; |
| | | border-radius: 40rpx; |
| | | |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view class=""> |
| | | <view class="tab"> |
| | | <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}" |
| | | :activeStyle="{color:'#017BFC'}"></u-tabs> |
| | | </view> |
| | | |
| | | <view class="grid flex flex-wrap"> |
| | | <view class="grid-item flex f-d-c a-i-c j-c-c"> |
| | | <text class="mb-20 f-28"></text> |
| | | <u-image width="150" height="100"></u-image> |
| | | <text class="mt-20"></text> |
| | | <text class="c-99 f-26"></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="detail bgc-ff"> |
| | | <caption-row text="网格基本情况" /> |
| | | <view class="detail-content"> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="comment"> |
| | | <caption-row text="留言" /> |
| | | <view class="comment-list "> |
| | | <view class="comment-item flex " v-for="(item,index) in commentList" :key="index"> |
| | | <u-avatar size="45" src="/static/icon/user-01.png"></u-avatar> |
| | | <view class="comment-item-content"> |
| | | <view class="flex j-c-s-b a-i-c mb-20"> |
| | | <text class="f-28 c-99">{{item.name}}</text> |
| | | <text class="c-99 f-24">{{item.createTime}}</text> |
| | | </view> |
| | | <view class="f-30"> |
| | | {{item.content}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="footer"> |
| | | <u-search searchIcon='edit-pen' :animation="true" placeholder="写评论" disabled |
| | | @click="navToComment"></u-search> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import captionRow from "@/components/caption/caption.vue" |
| | | export default { |
| | | components:{ |
| | | captionRow |
| | | }, |
| | | data(){ |
| | | return { |
| | | commentList:[] |
| | | } |
| | | }, |
| | | methods:{ |
| | | navToComment() { |
| | | uni.navigateTo({ |
| | | url: `comment?id=${this.params.id}` |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | page { |
| | | background-color: #F5F5F5; |
| | | } |
| | | |
| | | .tab { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | position: fixed; |
| | | /*#ifdef H5*/ |
| | | top: 88rpx; |
| | | /*#endif*/ |
| | | /*#ifdef MP-WEIXIN*/ |
| | | top: 0; |
| | | /*#endif*/ |
| | | left: 0; |
| | | background-color: #fff; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | z-index: 999; |
| | | |
| | | } |
| | | .grid{ |
| | | width:100%; |
| | | .grid-item{ |
| | | width:150rpx; |
| | | padding:20rpx 0; |
| | | } |
| | | } |
| | | |
| | | .detail{ |
| | | padding: 0 30rpx; |
| | | margin:20rpx 0; |
| | | .detail-content{ |
| | | padding:20rpx 0; |
| | | } |
| | | } |
| | | .comment { |
| | | width: 100%; |
| | | padding: 0 30rpx 160rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .comment-list { |
| | | width: 100%; |
| | | padding-top: 20rpx; |
| | | |
| | | .comment-item { |
| | | width: 100%; |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .comment-item-content { |
| | | flex: 1; |
| | | margin-left: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .footer { |
| | | width: 100%; |
| | | padding: 20rpx 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #fff; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | z-index: 10; |
| | | border-top: 1px solid #f5f5f5; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view class="bgc-ff"> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>公安局</text> |
| | | <text></text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>派出所</text> |
| | | <text></text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>社区民警</text> |
| | | <text></text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>联系方式</text> |
| | | <text></text> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | </script> |
| | | |
| | | <style> |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | .item-row { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | box-sizing: border-box; |
| | | border-bottom: 1px solid #f5f5f5; |
| | | font-size: 28rpx; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view class="container"> |
| | | <view class=""> |
| | | <u-avatar size="78"></u-avatar> |
| | | <view class="flex f-d-c"> |
| | | <text class="f-30 fw"></text> |
| | | <view class=""> |
| | | <text class="c-99 f-26"></text> |
| | | <view class="f-22"> |
| | | 拨打电话 |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="mb-30"> |
| | | <caption-row text="物业简介" /> |
| | | <view class="intro bgc-ff"> |
| | | <u-read-more ref="uReadMore"> |
| | | <rich-text :nodes="content"></rich-text> |
| | | </u-read-more> |
| | | </view> |
| | | </view> |
| | | <view class="mb-30"> |
| | | <caption-row text="人员信息" /> |
| | | <view class="person-list bgc-ff"> |
| | | <view class="person-list flex j-c-s-b a-i-c"> |
| | | <view class="flex"> |
| | | <u-avatar size="50"></u-avatar> |
| | | <text class="ml-10 mr-10"></text> |
| | | <text class="f-26 c-99"></text> |
| | | </view> |
| | | <view class="flex a-i-c"> |
| | | <u-icon name="phone-fill"></u-icon> |
| | | <text class="f-26 c-99"></text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class=""> |
| | | <caption-row text="留言" /> |
| | | <view class="comment-list bgc-ff"> |
| | | <view class="comment-item flex " v-for="(item,index) in commentList" :key="index"> |
| | | <u-avatar size="45" src="/static/icon/user-01.png"></u-avatar> |
| | | <view class="comment-item-content"> |
| | | <view class="flex j-c-s-b a-i-c mb-20"> |
| | | <text class="f-28 c-99">{{item.name}}</text> |
| | | <text class="c-99 f-24">{{item.createTime}}</text> |
| | | </view> |
| | | <view class="f-30"> |
| | | {{item.content}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import captionRow from "@/components/caption/caption.vue" |
| | | export default { |
| | | components: { |
| | | captionRow |
| | | }, |
| | | data() { |
| | | return { |
| | | commentList:[] |
| | | } |
| | | }, |
| | | methods:{ |
| | | navToComment() { |
| | | uni.navigateTo({ |
| | | url: `comment?id=${this.params.id}` |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .container { |
| | | padding: 0 30rpx; |
| | | } |
| | | .intro{ |
| | | border-radius: 10rpx; |
| | | padding:10rpx; |
| | | } |
| | | .person-list{ |
| | | padding:0 10rpx; |
| | | border-radius: 10rpx; |
| | | .person-list-item{ |
| | | padding:20rpx 0; |
| | | border-bottom:1px solid #f5f5f5; |
| | | } |
| | | } |
| | | .comment-list { |
| | | width: 100%; |
| | | padding-top: 20rpx; |
| | | |
| | | .comment-item { |
| | | width: 100%; |
| | | padding: 20rpx 0; |
| | | } |
| | | |
| | | .comment-item-content { |
| | | flex: 1; |
| | | margin-left: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .footer { |
| | | width: 100%; |
| | | padding: 20rpx 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #fff; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | z-index: 10; |
| | | border-top: 1px solid #f5f5f5; |
| | | } |
| | | </style> |
| | |
| | | setImages(){ |
| | | let urls = []; |
| | | for(let i of this.form.images){ |
| | | urls.push(i.url); |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | }, |
| | |
| | | <u-upload :fileList="imageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'imageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'imageUrls')" @delete="deletePics($event,'imageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="goodsImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'goodsImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'goodsImageUrls')" @delete="deletePics($event,'goodsImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | setImages(key) { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.url); |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | }, |
| | |
| | | <u-upload :fileList="fireImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'fireImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'fireImageUrls')" @delete="deletePics($event,'fireImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="scImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePics($event,'scImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="pfImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'pfImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'pfImageUrls')" @delete="deletePics($event,'pfImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePics($event,'uanImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | setImages(key) { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.url); |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | }, |
| | |
| | | <u-upload :fileList="foImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'foImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'foImageUrls')" @delete="deletePics($event,'foImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="fireFacsImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @delete="deletePics($event,'fireFacsImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="scImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePics($event,'scImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="patrolImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'patrolImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'patrolImageUrls')" @delete="deletePics($event,'patrolImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="antiCollisionImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @delete="deletePics($event,'antiCollisionImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePic"> |
| | | @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePics($event,'uanImageUrls')"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | |
| | | setImages(key) { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.url); |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | }, |
| | |
| | | <view class=""> |
| | | <caption-row title="共治人员"></caption-row> |
| | | <view class="menu bgc-ff flex flex-wrap"> |
| | | <view class="menu-item flex f-d-c a-i-c" v-for="i in 6"> |
| | | <text class="c-main f-32 fw mb-20">1</text> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">0</text> |
| | | <text class="f-28">党员</text> |
| | | </view> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">{{gridData.gridStatistics}}</text> |
| | | <text class="f-28">网格</text> |
| | | </view> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">0</text> |
| | | <text class="f-28">社工</text> |
| | | </view> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">{{gridData.companyStatistics}}</text> |
| | | <text class="f-28">物业</text> |
| | | </view> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">0</text> |
| | | <text class="f-28">业委会</text> |
| | | </view> |
| | | <view class="menu-item flex f-d-c a-i-c"> |
| | | <text class="c-main f-32 fw mb-20">0</text> |
| | | <text class="f-28">群团组织</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="bar-charts bgc-ff"> |
| | | <qiun-data-charts type="bar" :opts="opts" :chartData="chartData" /> |
| | | </view> |
| | | |
| | | <view class="pie-charts bgc-ff"> |
| | | <qiun-data-charts type="pie" :opts="pieOpts" :chartData="sexChartData" /> |
| | | <view class="pie-charts flex bgc-ff"> |
| | | <view class="pie-charts-box flex j-c-c a-i-c"> |
| | | <qiun-data-charts type="pie" :opts="pieOpts" :chartData="sexChartData" /> |
| | | </view> |
| | | <view class="pie-charts-explain flex f-d-c j-c-c" v-if="sexData.length"> |
| | | <view class="f-32 fw mb-20">性别</view> |
| | | <view class="flex a-i-c mb-20" v-for="i in sexData"> |
| | | <text class="f-30 fw">{{i.gender}}</text> |
| | | <text class="f-26">({{i.numbers}})</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | <view class="event"> |
| | |
| | | |
| | | <script> |
| | | import captionRow from "@/components/caption/caption.vue" |
| | | import { |
| | | getReportStatistics |
| | | } from "@/api/task/taskReportForRepairs.js" |
| | | import { |
| | | getHouseStatistics |
| | | } from "@/api/house/house.js" |
| | | import { |
| | | getHouseholdStatistics |
| | | } from "@/api/house/household.js" |
| | | import * as statisticsModal from "@/api/statistics/statistics.js" |
| | | export default { |
| | | components: { |
| | | captionRow |
| | |
| | | reportData: {}, |
| | | houseData: {}, |
| | | chartData: {}, |
| | | //您可以通过修改 config-ucharts.js 文件中下标为 ['bar'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。 |
| | | opts: { |
| | | fontSize: 10, |
| | | color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", |
| | | "#ea7ccc" |
| | | ], |
| | |
| | | enableScroll: false, |
| | | legend: {}, |
| | | xAxis: { |
| | | boundaryGap: "justify", |
| | | // boundaryGap: "justify", |
| | | disableGrid: false, |
| | | min: 0, |
| | | axisLine: false, |
| | | max: 70 |
| | | // max: 70, |
| | | fontSize: 10, |
| | | |
| | | }, |
| | | yAxis: {}, |
| | | extra: { |
| | | bar: { |
| | | type: "stack", |
| | | width: 30, |
| | | width: 14, |
| | | meterBorde: 1, |
| | | meterFillColor: "#FFFFFF", |
| | | activeBgColor: "#000000", |
| | |
| | | } |
| | | } |
| | | }, |
| | | sexChartData:{}, |
| | | sexChartData: {}, |
| | | pieOpts: { |
| | | color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", |
| | | "#ea7ccc" |
| | |
| | | enableScroll: false, |
| | | extra: { |
| | | pie: { |
| | | customRadius: 60, |
| | | activeOpacity: 0.5, |
| | | activeRadius: 10, |
| | | offsetAngle: 0, |
| | | labelWidth: 15, |
| | | labelWidth: 6, |
| | | border: false, |
| | | borderWidth: 3, |
| | | borderColor: "#FFFFFF" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | gridData: {}, |
| | | sexData: [] |
| | | } |
| | | }, |
| | | |
| | | onLoad() { |
| | | this.getHouseHoldData(); |
| | | // this.getServerData(); |
| | | this.getHouseData(); |
| | | this.getReportData(); |
| | | this.getGridData(); |
| | | }, |
| | | |
| | | methods: { |
| | | getHouseHoldData() { |
| | | getHouseholdStatistics({ |
| | | statisticsModal.getHouseholdStatistics({ |
| | | code: this.siteInfo.id, |
| | | roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2 |
| | | }).then(res => { |
| | | // this.houseHoldData = res.data; |
| | | let data = res.data; |
| | | this.sexData = data.gender; |
| | | this.setPersonData(data.age) |
| | | this.setSexData(data.gender) |
| | | }) |
| | |
| | | } |
| | | this.chartData = JSON.parse(JSON.stringify(res)); |
| | | }, |
| | | |
| | | setSexData(data){ |
| | | |
| | | setSexData(data) { |
| | | let res = { |
| | | series:[ |
| | | { |
| | | data:[] |
| | | } |
| | | ] |
| | | series: [{ |
| | | data: [] |
| | | }] |
| | | } |
| | | for(let i of data){ |
| | | res.series[0].data.push( |
| | | { |
| | | name:i.gender, |
| | | value:i.numbers |
| | | } |
| | | ) |
| | | for (let i of data) { |
| | | res.series[0].data.push({ |
| | | name: i.gender, |
| | | value: i.numbers |
| | | }) |
| | | } |
| | | this.sexChartData = JSON.parse(JSON.stringify(res)); |
| | | this.sexChartData = JSON.parse(JSON.stringify(res)); |
| | | }, |
| | | |
| | | getServerData() { |
| | | //模拟从服务器获取数据时的延时 |
| | | setTimeout(() => { |
| | | //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接 |
| | | let res = { |
| | | categories: ["2018", "2019", "2020", "2021", "2022", "2023"], |
| | | series: [{ |
| | | name: "目标值", |
| | | data: [35, 36, 31, 33, 13, 34] |
| | | }] |
| | | }; |
| | | this.chartData = JSON.parse(JSON.stringify(res)); |
| | | }, 500); |
| | | }, |
| | | |
| | | |
| | | //获取社区概况数据 |
| | | getHouseData() { |
| | | getHouseStatistics({ |
| | | statisticsModal.getHouseStatistics({ |
| | | code: this.siteInfo.id, |
| | | roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2 |
| | | }).then(res => { |
| | |
| | | |
| | | //获取社区事件数据 |
| | | getReportData() { |
| | | getReportStatistics({ |
| | | statisticsModal.getReportStatistics({ |
| | | code: this.siteInfo.id, |
| | | roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2 |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.reportData = res.data; |
| | | }) |
| | | }, |
| | | |
| | | //获取网格物业人员 |
| | | getGridData() { |
| | | statisticsModal.getGridStatistics({ |
| | | code: this.siteInfo.id, |
| | | roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2 |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.gridData = res.data; |
| | | }) |
| | | } |
| | | } |
| | |
| | | // background-color:#fff; |
| | | } |
| | | |
| | | .bar-charts,.pie-charts { |
| | | .bar-charts, |
| | | .pie-charts { |
| | | width: 100%; |
| | | height: 300px; |
| | | border-radius: 10rpx; |
| | | padding: 0 20rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | .bar-charts{ |
| | | margin:20rpx 0; |
| | | |
| | | .bar-charts { |
| | | margin: 20rpx 0; |
| | | } |
| | | |
| | | // .pie-charts-box,.pie-charts-explain{ |
| | | // width:50%; |
| | | // } |
| | | .pie-charts-box { |
| | | width: 70%; |
| | | } |
| | | |
| | | .pie-charts-explain { |
| | | width: 30%; |
| | | padding-left: 40rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | </style> |
| | |
| | | <view class="licence" v-if="locationImageUrls.length"> |
| | | <box-title title="位置图片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in locationImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in locationImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,locationImageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | this.basicData.forEach(item => { |
| | | item.value = data[item.name] |
| | | }) |
| | | this.locationImageUrls = this.setImages(data.locationImageUrls); |
| | | this.locationImageUrls = this.$setImageUrl(data.locationImageUrls); |
| | | |
| | | }) |
| | | }, |
| | | setImages(str) { |
| | | if (str) { |
| | | return str.split(",") |
| | | } else { |
| | | return [] |
| | | } |
| | | |
| | | previewImg(current,urls){ |
| | | uni.previewImage({ |
| | | current,urls |
| | | }) |
| | | }, |
| | | |
| | | |
| | | handleConfirm(e) { |
| | | this.confirmFlag = e.value[0].name; |
| | | this.info.confirmFlag = e.value[0].status; |
| | |
| | | setGoOutImages(key) { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.url); |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | }, |
| | |
| | | <view class="licence" v-if="fireImages.length"> |
| | | <box-title title="灭火器图片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in fireImages" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in fireImages" :key="k" class="ml-20 mt-20" @click="previewImg(i,fireImages)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="planegraph" v-if="scImageUrls.length"> |
| | | <box-title title="安全通道图片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in scImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in scImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,scImageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="planegraph" v-if="pfImageUrls.length"> |
| | | <box-title title="技防设施图片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in pfImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in pfImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,pfImageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="planegraph" v-if="uanImageUrls.length"> |
| | | <box-title title="未成年人入住及照片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in uanImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in uanImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,uanImageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | this.basicData.forEach(item => { |
| | | item.value = data[item.name] |
| | | }) |
| | | this.fireImages = this.setImages(data.fireImageUrls); |
| | | this.scImageUrls = this.setImages(data.scImageUrls); |
| | | this.pfImageUrls = this.setImages(data.pfImageUrls); |
| | | this.uanImageUrls = this.setImages(data.uanImageUrls); |
| | | this.fireImages = this.$setImageUrl(data.fireImageUrls); |
| | | this.scImageUrls = this.$setImageUrl(data.scImageUrls); |
| | | this.pfImageUrls = this.$setImageUrl(data.pfImageUrls); |
| | | this.uanImageUrls = this.$setImageUrl(data.uanImageUrls); |
| | | |
| | | }) |
| | | }, |
| | | setImages(str) { |
| | | if (str) { |
| | | return str.split(",") |
| | | } else { |
| | | return [] |
| | | } |
| | | |
| | | previewImg(current,urls){ |
| | | uni.previewImage({ |
| | | current,urls |
| | | }) |
| | | }, |
| | | |
| | | handleConfirm(e) { |
| | |
| | | <view class="licence" v-if="imageUrls.length"> |
| | | <box-title title="手持身份证" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,imageUrls)"> |
| | | <u-image :src="i" width="80" height="80" ></u-image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="planegraph" v-if="goodsImageUrls.length"> |
| | | <box-title title="物品照片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,imageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | this.basicData.forEach(item => { |
| | | item.value = data[item.name] |
| | | }) |
| | | this.imageUrls = this.setImages(data.imageUrls); |
| | | this.goodsImageUrls = this.setImages(data.goodsImageUrls); |
| | | // this.imageUrls = this.setImages(data.imageUrls); |
| | | // this.goodsImageUrls = this.setImages(data.goodsImageUrls); |
| | | this.imageUrls = this.$setImageUrl(data.imageUrls); |
| | | this.goodsImageUrls = this.$setImageUrl(data.goodsImageUrls) |
| | | }) |
| | | }, |
| | | setImages(str) { |
| | | if (str) { |
| | | return str.split(",") |
| | | } else { |
| | | return [] |
| | | } |
| | | }, |
| | | |
| | | previewImg(current,urls){ |
| | | uni.previewImage({ |
| | | current,urls |
| | | }) |
| | | }, |
| | | |
| | | handleConfirm(e) { |
| | | this.form.confirmFlag = e.value[0].name; |
| | |
| | | <view class="licence" v-if="imageUrls.length"> |
| | | <box-title title="手持身份证" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,imageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="planegraph" v-if="goodsImageUrls.length"> |
| | | <box-title title="物品照片" class="box-title"></box-title> |
| | | <view class="flex-wrap"> |
| | | <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20"> |
| | | <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,goodsImageUrls)"> |
| | | <u-image :src="i" width="80" height="80"></u-image> |
| | | </view> |
| | | </view> |
| | |
| | | this.basicData.forEach(item => { |
| | | item.value = data[item.name] || "未完善" |
| | | }) |
| | | this.foImageUrls = this.setImages(data.foImageUrls); |
| | | this.fireFacsImageUrls = this.setImages(data.fireFacsImageUrls); |
| | | this.patrolImageUrls = this.setImages(data.patrolImageUrls); |
| | | this.antiCollisionImageUrls = this.setImages(data.antiCollisionImageUrls); |
| | | this.haImageUrls = this.setImages(data.haImageUrls); |
| | | this.foImageUrls = this.$setImageUrl(data.foImageUrls); |
| | | this.fireFacsImageUrls = this.$setImageUrl(data.fireFacsImageUrls); |
| | | this.patrolImageUrls = this.$setImageUrl(data.patrolImageUrls); |
| | | this.antiCollisionImageUrls = this.$setImageUrl(data.antiCollisionImageUrls); |
| | | this.haImageUrls = this.$setImageUrl(data.haImageUrls); |
| | | }) |
| | | }, |
| | | setImages(str) { |
| | | if (str) { |
| | | return str.split(",") |
| | | } else { |
| | | return [] |
| | | } |
| | | |
| | | previewImg(current,urls){ |
| | | uni.previewImage({ |
| | | current,urls |
| | | }) |
| | | }, |
| | | |
| | | handleConfirm(e) { |