Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
| | |
| | | export default { |
| | | // BASE_URL: 'https://huacheng.psciio.com', |
| | | BASE_URL: 'http://192.168.110.188:6194', |
| | | imageUrl: 'https://huacheng.psciio.com/api/huacheng-communitybackstage/communitypartybuilding/uploadimage', |
| | | uploadToken: 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2NzYwOTg3NzQ0OTk0NjMxNjgsInR5cGUiOjMsImV4cCI6MTc0MTY4NjQ0OSwiY3JlYXRlZCI6MTc0MDM5MDQ0OTYxN30.UpanrjmCLuKlxm32IbBldBOSJJNYL8ZDrbZQM9z_HCW8X9cL8Ox8jwgX0j4_2nq3ALjYD7aPQWbVmMb2vHIIdA' |
| | | imageUrl: 'https://huacheng.psciio.com/api/huacheng-applets/common/uploadimages', |
| | | } |
| | |
| | | { |
| | | "name": "三个身边", |
| | | "appid": "", |
| | | "appid": "__UNI__5950066", |
| | | "description": "", |
| | | "versionName": "1.0.0", |
| | | "versionCode": "100", |
| | |
| | | "treeShaking": { |
| | | "enable": false |
| | | } |
| | | }, |
| | | "router": { |
| | | "base": "./" |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages |
| | | |
| | | { |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "首页", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/list/list", |
| | | "style": { |
| | | "navigationBarTitleText": "诉求列表", |
| | | "navigationBarBackgroundColor": "#fff" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/delay/delay", |
| | | "style": { |
| | | "navigationBarTitleText": "延期情况说明", |
| | | "navigationBarBackgroundColor": "#fff" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/progress/progress", |
| | | "style": { |
| | | "navigationBarTitleText": "办理进度", |
| | | "navigationBarBackgroundColor": "#fff" |
| | | } |
| | | }, |
| | | |
| | | { |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "首页", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/list/list", |
| | | "style": { |
| | | "navigationBarTitleText": "诉求列表", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/delay/delay", |
| | | "style": { |
| | | "navigationBarTitleText": "延期情况说明", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/progress/progress", |
| | | "style": { |
| | | "navigationBarTitleText": "办理进度", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | |
| | | { |
| | | "path": "pages/add-progress/index", |
| | | "style": { |
| | | "navigationBarTitleText": "办理进度", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, { |
| | | "path": "pages/work-detail/work-detail", |
| | | "style": { |
| | | "navigationBarBackgroundColor": "#ffffff", |
| | | "navigationBarTitleText": "诉求详情", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/work-detail/maxVideo", |
| | | "style": { |
| | | "navigationBarBackgroundColor": "#000000", |
| | | "navigationBarTitleText": "播放视频", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | |
| | | "path": "pages/problemReporting/problemReporting", |
| | | "style": { |
| | | "navigationBarTitleText": "问题上报", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/dispatchWorkOrder/dispatchWorkOrder", |
| | | "style": { |
| | | "navigationBarTitleText": "工单下派", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/Appeal/Appeal", |
| | | "style": { |
| | | "navigationBarTitleText": "诉求录入", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | // "navigationBarTitleText": "诉求录入", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/location/location", |
| | | "style": { |
| | | "navigationBarTitleText": "选择地点", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | |
| | | "path": "pages/result-entry/index", |
| | | "style": { |
| | | "navigationBarTitleText": "办结结果录入", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/work-detail/postpone-apply", |
| | | "style": { |
| | | "navigationBarTitleText": "延期申请", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/progress/progress", |
| | | "style": { |
| | | "navigationBarTitleText": "办理进度录入", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | "navigationStyle": "custom" |
| | | } |
| | | } |
| | | ], |
| | |
| | | <view class="card flex a-center h-108 j-between"> |
| | | <text class="w-108 fs-27 font-bold mr-85">发生时间</text> |
| | | <view class=" flex a-center j-between flex1" @click="showDate=true"> |
| | | <input v-model="time" disabled @click="showDate=true" placeholder-style="color: rgba(0,0,0,0.3);font-size:27rpx;" |
| | | class="uni-input flex1" maxlength="10" placeholder="请选择问题发生的时间" /> |
| | | <image src="/static/Appeal/left.png" class="w-19 h-19" mode=""></image> |
| | | <view class=" flex a-center j-between flex1"> |
| | | <view class="flex1" v-if="time"> |
| | | {{time}} |
| | | </view> |
| | | <view class="flex1" v-else style="color: rgba(0,0,0,0.3);font-size:27rpx;"> |
| | | 请选择问题发生的时间 |
| | | </view> |
| | | <image src="/static/Appeal/left.png" class="w-19 h-19" mode=""></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="card flex a-center h-108 j-between"> |
| | | <text class="w-108 fs-27 font-bold mr-85">问题类型</text> |
| | | <view class=" flex a-center j-between flex1" @click="showList=true"> |
| | | <input v-model="problemType" disabled placeholder-style="color: rgba(0,0,0,0.3);font-size:27rpx;" |
| | | class="uni-input flex1" maxlength="10" placeholder="请选择问题类型" /> |
| | | |
| | | <view class="flex1" v-if="problemType"> |
| | | {{problemType}} |
| | | </view> |
| | | <view class="flex1" v-else style="color: rgba(0,0,0,0.3);font-size:27rpx;"> |
| | | 请选择问题类型 |
| | | </view> |
| | | <image src="/static/Appeal/left.png" class="w-19 h-19" mode=""></image> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="card flex a-center h-108 j-between" @click="goTopagelocation()"> |
| | | <text class="w-108 fs-27 font-bold mr-85">地点</text> |
| | | <view class=" flex a-center j-between flex1"> |
| | | <input v-model="location" disabled placeholder-style="color: rgba(0,0,0,0.3);font-size:27rpx;" |
| | | class="uni-input flex1" placeholder="请选择问题发生具体地点" /> |
| | | |
| | | <view class="flex1" v-if="location"> |
| | | {{location}} |
| | | </view> |
| | | <view class="flex1" v-else style="color: rgba(0,0,0,0.3);font-size:27rpx;"> |
| | | 请选择问题发生具体地点 |
| | | </view> |
| | | <image src="/static/Appeal/left.png" class="w-19 h-19" mode=""></image> |
| | | </view> |
| | | </view> |
| | |
| | | save, |
| | | getproblem |
| | | } from './service.js' |
| | | import config from '@/config/index.js' |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | images: [], |
| | | videos: [], |
| | | }; |
| | | }, |
| | | onReady() { |
| | | uni.setNavigationBarTitle({ |
| | | title: '诉求录入' |
| | | }) |
| | | }, |
| | | onLoad() { |
| | | this.getproblem() |
| | |
| | | console.log(res, 'res'); |
| | | uni.showLoading() |
| | | uni.uploadFile({ |
| | | url: 'https://huacheng.psciio.com/api/huacheng-communitybackstage/communitypartybuilding/uploadimage', |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePaths[0], |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2NzYwOTg3NzQ0OTk0NjMxNjgsInR5cGUiOjMsImV4cCI6MTc0MTY4NjQ0OSwiY3JlYXRlZCI6MTc0MDM5MDQ0OTYxN30.UpanrjmCLuKlxm32IbBldBOSJJNYL8ZDrbZQM9z_HCW8X9cL8Ox8jwgX0j4_2nq3ALjYD7aPQWbVmMb2vHIIdA' |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | console.log(JSON.parse(uploadFileRes.data), 'uploadFileRes'); |
| | |
| | | console.log(res, 'res'); |
| | | uni.showLoading() |
| | | uni.uploadFile({ |
| | | url: 'https://huacheng.psciio.com/api/huacheng-communitybackstage/communitypartybuilding/uploadimage', |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePath, |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE2NzYwOTg3NzQ0OTk0NjMxNjgsInR5cGUiOjMsImV4cCI6MTc0MTY4NjQ0OSwiY3JlYXRlZCI6MTc0MDM5MDQ0OTYxN30.UpanrjmCLuKlxm32IbBldBOSJJNYL8ZDrbZQM9z_HCW8X9cL8Ox8jwgX0j4_2nq3ALjYD7aPQWbVmMb2vHIIdA' |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | console.log(JSON.parse(uploadFileRes.data).data, 'uploadFileRes'); |
| | |
| | | <template> |
| | | <view class="px-31 pt-38"> |
| | | <u-navbar placeholder title="办理进度" @leftClick="back"></u-navbar> |
| | | <view v-if="Object.keys(info).length != 0" class="br-19 bs-1 pt-21 pb-35 px-27 bgcolor2"> |
| | | <view class="flex a-center j-between fs-23 lh-33 font-bold"> |
| | | <view>诉求号:{{ info.serialNumber }}</view> |
| | |
| | | }) |
| | | }, |
| | | uploadImg(type) { |
| | | if (!this.againCklicFlag) return |
| | | // if (!this.againCklicFlag) return |
| | | this.againCklicFlag = false |
| | | if (type == 1) { |
| | | uni.chooseImage({ |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | }) |
| | | } |
| | | }, |
| | | fail: () => { |
| | | this.againCklicFlag = true |
| | | } |
| | | }) |
| | | } else { |
| | | uni.chooseVideo({ |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: cuni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | fail: () => { |
| | | this.againCklicFlag = true |
| | | } |
| | | }) |
| | | } |
| | |
| | | <text class="color2 fs-27" @click="showData =!showData">查看更多</text> |
| | | </view> |
| | | <view class="flex flex-wrap j-between"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="member==1" @click="onClick()" > |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="member==1" @click="onClick()"> |
| | | <image class="w-94 h-77 ml-38" src="/static/home/img7.png" mode=""></image> |
| | | <text class="ml-37 font-bold">党员证件</text> |
| | | </view> |
| | |
| | | <image class="w-79 h-77 ml-38" src="/static/home/img1.png" mode=""></image> |
| | | <text class="ml-37 font-bold">回访评价</text> |
| | | </view> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="member==2"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="member==2"> |
| | | <image class="w-81 h-77 ml-38" src="/static/home/img8.png" mode=""></image> |
| | | <text class="ml-37 font-bold">统计分析</text> |
| | | </view> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="showData&&member==1"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" v-if="showData&&member==1"> |
| | | <image class="w-81 h-77 ml-38" src="/static/home/img8.png" mode=""></image> |
| | | <text class="ml-37 font-bold">统计分析</text> |
| | | </view> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" @click="onClick()" v-if="showData&&member==2"> |
| | | <view class="pt-38 pb-38 bg1 w-333 br-19 mt-19 flex a-center" @click="onClick()" |
| | | v-if="showData&&member==2"> |
| | | <image class="w-94 h-77 ml-38" src="/static/home/img7.png" mode=""></image> |
| | | <text class="ml-37 font-bold">党员证</text> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="list mt-29"> |
| | | <view v-if="isactive==1?msgList.length == 0:msgLists.length == 0" class="txt-center"> |
| | | <image src="../../static/空空如也@2x.png" mode="widthFix" class="w80"></image> |
| | | <view class="fs-23 mt-20 mb-20 color4">暂无数据</view> |
| | | </view> |
| | | <view class="flex a-center mb-27" v-for="item in isactive==1?msgList:msgLists" :key="item.id"> |
| | | <view class="avater pb-33"> |
| | | <image class="w-85 h-85 br50" src="/static/home/img9.png" mode=""></image> |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <text class="flex j-center fs-27 color4 pb-48" @click="Allread">全部已读</text> |
| | | <text v-if="isactive==1?msgList.length > 0:msgLists.length > 0" |
| | | class="flex j-center fs-27 color4 pb-48" @click="Allread">全部已读</text> |
| | | |
| | | </view> |
| | | |
| | |
| | | } |
| | | |
| | | }, |
| | | onLoad() { |
| | | onLoad(e) { |
| | | if (e.token) { |
| | | uni.setStorageSync('token', 'Bearer ' + e.token) |
| | | } |
| | | this.getBanner() |
| | | this.getMessagelist() |
| | | this.getappletcinfo() |
| | |
| | | this.isLoading = false |
| | | } |
| | | this.msgListTotal = this.msgListTotal.map(item => { |
| | | const timeDifference = new Date().getTime() - new Date(item.createTime).getTime() |
| | | const timeDifference = new Date().getTime() - new Date(item.createTime) |
| | | .getTime() |
| | | // 使用 dayjs 的 duration 来处理时间差 |
| | | |
| | | |
| | |
| | | |
| | | return item |
| | | }) |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item |
| | | .promptType == |
| | | 2) |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item |
| | | .promptType == |
| | | 1) |
| | | this.noreadlists = this.msgLists.filter(item => item.readStatus === 0) |
| | | this.noreadlist = this.msgList.filter(item => item.readStatus === 0) |
| | |
| | | changeActive(value) { |
| | | this.isactive = value |
| | | if (value == 1) { |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == 2) |
| | | this.noreadlist = this.msgList.filter(item => item.readStatus === 0) |
| | | this.msgList = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | 2) |
| | | this.noreadlist = this.msgList.filter(item => item.readStatus === 0) |
| | | } else { |
| | | |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == 1) |
| | | this.msgLists = JSON.parse(JSON.stringify(this.msgListTotal)).filter(item => item.promptType == |
| | | 1) |
| | | this.noreadlists = this.msgLists.filter(item => item.readStatus === 0) |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .bg-img { |
| | | height: 648rpx; |
| | | height: 550rpx; |
| | | } |
| | | |
| | | .swiper { |
| | |
| | | <template> |
| | | <view class="content"> |
| | | <u-navbar title="选择地点" bgColor="transparent" titleStyle="font-size: 35rpx;font-weight:bold;" placeholder> |
| | | <view slot="left" @click="back"> |
| | | <image src="/static/location/back.png" class="w-19 h-35" mode=""></image> |
| | | </view> |
| | | </u-navbar> |
| | | <view slot="left" @click="back"> |
| | | <image src="/static/location/back.png" class="w-19 h-35" mode=""></image> |
| | | </view> |
| | | <view class="" id="container"> |
| | | |
| | | </view> |
| | |
| | | </view> |
| | | <view class="card" @click="changeAdr(item.id,item)" :class="item.id ==uid ?'activecard':''" |
| | | v-for="item in locationList" :key="item.id"> |
| | | <text>{{item.address}}</text> |
| | | <text class="font-w500 fs-23 mt-25" style="color: rgba(0, 0, 0, 0.6);">{{item.address}}</text> |
| | | <text>{{item.title || item.name}}</text> |
| | | <text class="font-w500 fs-23 mt-25" |
| | | style="color: rgba(0, 0, 0, 0.6);">{{item.address || item.name}}</text> |
| | | |
| | | </view> |
| | | </view> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | searchLocation |
| | | } from './service' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | keyword: '', |
| | | locationList: [], |
| | | city: '攀枝花市', |
| | | markers:[], |
| | | markers: [], |
| | | }; |
| | | }, |
| | | methods: { |
| | | clearMarkers() { |
| | | // 清除所有标点 |
| | | this.markers.forEach((marker) => { |
| | | this.map.removeOverlay(marker); |
| | | }); |
| | | this.markers = []; // 清空存储标点的数组 |
| | | }, |
| | | clearMarkers() { |
| | | // 清除所有标点 |
| | | this.markers.forEach((marker) => { |
| | | this.map.removeOverlay(marker); |
| | | }); |
| | | this.markers = []; // 清空存储标点的数组 |
| | | }, |
| | | back() { |
| | | uni.navigateBack() |
| | | }, |
| | | |
| | | changeAdr(value, addr) { |
| | | console.log(value, addr, 'asdasdada'); |
| | | this.uid = value |
| | | const pages = getCurrentPages() |
| | | let prevPage = pages[pages.length - 2]; |
| | | prevPage.location = addr.address |
| | | prevPage.latitude = addr.point.lat |
| | | prevPage.longitude = addr.point.lng |
| | | |
| | | if (addr.point) { |
| | | prevPage.latitude = addr.point.lat |
| | | prevPage.longitude = addr.point.lng |
| | | } |
| | | if (addr.location) { |
| | | prevPage.latitude = addr.location.lat |
| | | prevPage.longitude = addr.location.lng |
| | | } |
| | | prevPage.location = addr.address || addr.name |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 200) |
| | |
| | | // 搜索地点 |
| | | searchLocation() { |
| | | if (!this.keyword) return; |
| | | searchLocation({ |
| | | query: this.keyword, |
| | | location: `${this.latitude},${this.longitude }`, |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.searchResults = res.data; |
| | | if (res.data.length > 0) { |
| | | this.latitude = res.data[0].location.lat |
| | | this.longitude = res.data[0].location.lng |
| | | } |
| | | this.locationList = res.data.map((result, index) => { |
| | | result.id = index + 1 |
| | | return result |
| | | }); |
| | | console.log(this.locationList); |
| | | } |
| | | }) |
| | | return |
| | | uni.request({ |
| | | url: `https://api.map.baidu.com/place/v2/search`, |
| | | method: 'GET', |
| | |
| | | item.id = index + 1 |
| | | return item |
| | | }) |
| | | |
| | | console.log(this.locationList); |
| | | }) |
| | | this.map.addEventListener('click', (e) => { |
| | | this.clearMarkers() |
New file |
| | |
| | | import request from '@/utils/request.js' |
| | | |
| | | // 地点搜索 |
| | | export const searchLocation = (params) => { |
| | | return request.get(`/api/huacheng-sangeshenbian/applet/home/search-location`, params) |
| | | } |
| | |
| | | <view class="color1">{{ ["正在办理", "延期办理", "超时办理", "已办结", "群众撤销", "上报待审核", "上级驳回"][info.status] }}</view> |
| | | </view> |
| | | <view class="mx-13 mt-33 pt-35 pb-33 px-27 br-19 flex a-center j-between bgcolor1"> |
| | | <view class="fs-27 lh-38 color2">{{ info.detailedAddress }}</view> |
| | | <view class="fs-27 lh-38 color2">{{ info.location }}</view> |
| | | <image src="@/static/detailImg/dwei.png" class="w-31 h-31 shrink0" /> |
| | | </view> |
| | | <view class="flex a-center j-between mt-31 mx-13"> |
| | |
| | | <view class="flex1"> |
| | | <view class="flex a-center j-between mb-10"> |
| | | <view class="name">{{ item.createByName }}</view> |
| | | <view class="time">{{ item.createTime }}</view> |
| | | <view class="time">{{ item.createTime | formatTime }}</view> |
| | | </view> |
| | | <view class="context">{{ item.describe }}</view> |
| | | <view class="proImg"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import dayjs from '../../uni_modules/uview-ui/libs/util/dayjs' |
| | | import { |
| | | getComplaintDetail |
| | | } from './service' |
| | |
| | | type: true, |
| | | } |
| | | }, |
| | | filters: { |
| | | formatTime(val) { |
| | | if (!val) return '' |
| | | return dayjs(val).format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | }, |
| | | onLoad(params) { |
| | | this.id = params.id |
| | | if (params.type) { |
| | |
| | | <view class="shrink0 color2 font-w400"> |
| | | <view>创建时间</view> |
| | | <view>问题类型</view> |
| | | <view>群众</view> |
| | | <view>群众姓名</view> |
| | | <view>联系电话</view> |
| | | <view>详细地址</view> |
| | | </view> |
| | | <view class="font-bold txt-aligin-r" style="max-width: 404rpx;"> |
| | | <view>{{ info.createTime }}</view> |
| | | <view>{{ info.createTime | formatTime }}</view> |
| | | <view>{{ info.problemType }}</view> |
| | | <view>{{ info.name }}</view> |
| | | <view>{{ info.contactNumber }}</view> |
| | |
| | | </view> |
| | | <view class="fs-27 mt-35 lh-38 font-bold">描述图片</view> |
| | | <view class="flex wrap mt-27"> |
| | | <view @tap="viewImage(item)" class="relative mr-15" v-for="item in info.images.split(',')" |
| | | :key="item"> |
| | | <view @tap="viewImage(item)" class="relative mr-15" |
| | | v-for="item in info.images && info.images.split(',')" :key="item"> |
| | | <image :src="item" class="w-140 h-140 shrink0 br-8" /> |
| | | <view class="absolute w-140 h-140 bgcolor5 top0 left0 br-8 flex a-center j-center"> |
| | | <image @tap="viewImage(item)" src="@/static/Appeal/amplify.png" class="w-19 h-19" /> |
| | |
| | | </view> |
| | | <view class="fs-27 mt-37 lh-38 font-bold">描述视频</view> |
| | | <view class="flex wrap mt-27"> |
| | | <view @tap="openVideo(item)" class="relative mr-15" v-for="item in info.videos.split(',')" |
| | | :key="item"> |
| | | <view @tap="openVideo(item)" class="relative mr-15" |
| | | v-for="item in info.videos && info.videos.split(',')" :key="item"> |
| | | <video id="myVideo" class="w-140 h-140 mt-19 shrink0" disabled :controls="false" |
| | | :show-center-play-btn="false" :src="item" /> |
| | | <view class="videoOpen" @click.stop="openVideo(item)"> |
| | |
| | | saveResult, |
| | | getComplaintDetail |
| | | } from './service' |
| | | import dayjs from '../../uni_modules/uview-ui/libs/util/dayjs' |
| | | import config from '@/config/index.js' |
| | | export default { |
| | | data() { |
| | |
| | | this.info = res.data |
| | | }) |
| | | }, |
| | | filters: { |
| | | formatTime(val) { |
| | | if (!val) return '' |
| | | return dayjs(val).format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (!this.status) { |
| | |
| | | mask: true |
| | | }) |
| | | } |
| | | if (this.completionImages.length == 0) { |
| | | return uni.showToast({ |
| | | title: '请上传办结结果图片', |
| | | icon: 'none', |
| | | mask: true |
| | | }) |
| | | } |
| | | if (this.completionVideos.length == 0) { |
| | | return uni.showToast({ |
| | | title: '请上传办结结果视频', |
| | | icon: 'none', |
| | | mask: true |
| | | }) |
| | | } |
| | | |
| | | saveResult({ |
| | | id: this.id, |
| | | status: this.status == '已办结' ? 3 : 4, |
| | |
| | | }) |
| | | }, |
| | | uploadImg(type) { |
| | | if (!this.againCklicFlag) return |
| | | // if (!this.againCklicFlag) return |
| | | this.againCklicFlag = false |
| | | if (type == 1) { |
| | | uni.chooseImage({ |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | <template> |
| | | <view> |
| | | <u-navbar title=" " bgColor="#000000" autoBack leftIconColor="#ffffff"> |
| | | </u-navbar> |
| | | <view class="preview-full"> |
| | | <video class="videoMax" :autoplay="true" :src="videoUrl" :show-fullscreen-btn="false"> |
| | | |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | timeout: 1000 * 45, |
| | | name: 'file', |
| | | header: { |
| | | Authorization: config.uploadToken |
| | | Authorization: uni.getStorageSync('token') |
| | | }, |
| | | success: (res) => { |
| | | if (JSON.parse(res.data).code == 200) { |
| | |
| | | <template> |
| | | <view class="content"> |
| | | <u-navbar title="诉求详情" :bgColor="scoreTopHeight>100?'#ffffff':'transparent'" autoBack> |
| | | </u-navbar> |
| | | <view class="topColor"> |
| | | </view> |
| | | <view class="allContent"> |
| | |
| | | } |
| | | }, |
| | | onShow() { |
| | | |
| | | // alert(uni.getStorageSync('token')) |
| | | this.getDetailInfo() |
| | | }, |
| | | onLoad(params) { |
| | |
| | | getUserInfo().then(res => { |
| | | if (res.data == null) { |
| | | this.isParty = true |
| | | console.log('111111') |
| | | } |
| | | this.userInfo = { |
| | | ...res.data |
| | |
| | | |
| | | return new Promise(function(resolve, reject) { |
| | | |
| | | let token = |
| | | 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MTc2NDEyMiwiY3JlYXRlZCI6MTc0MDQ2ODEyMjU3MX0.LNEAn1IfHwgB0Xxr7AcDyBe9kKSGhW1R2EKvoIOymc0dAS8lMO7LLHfU9qB12e534cI2Cv8oummkOPI_70EO5w' |
| | | //党员 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MTc2NDEyMiwiY3JlYXRlZCI6MTc0MDQ2ODEyMjU3MX0.LNEAn1IfHwgB0Xxr7AcDyBe9kKSGhW1R2EKvoIOymc0dAS8lMO7LLHfU9qB12e534cI2Cv8oummkOPI_70EO5w |
| | | // 社区 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE1OTAxNzYwNTgxNTY1NDgwOTgsInR5cGUiOjEsImV4cCI6MTc0MTcwNTE1OSwiY3JlYXRlZCI6MTc0MDQwOTE1OTEwMH0.AmeZFq2Pj2y2bRF1AolsRWHA4ehobBdx1-LtQHIJzub8WjEh_TxZ-PTEI7uiujlLWKhJE07PCVCggAdeuF3UIA |
| | | // 市 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0MjE4MjgwODU4Mzc4MjYsInR5cGUiOjEsImV4cCI6MTc0MTY5ODg0OCwiY3JlYXRlZCI6MTc0MDQwMjg0ODMzN30.7IYRD37yTkhqcnKyXWcqKk_iTisMp3ar_ByfuVR7Go9rK8ZnGJrlwC3z4NF_ly7IIoBHgE2E4IAvfm3ccam8wg |
| | | //街道 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjY2OTc5LCJ0eXBlIjoxLCJleHAiOjE3NDE3MDU4NDMsImNyZWF0ZWQiOjE3NDA0MDk4NDMyNTZ9.MOPT3X3Cw9AUmeuIpqDA1a1xZd7V85NSraJddxCrPHvOkaZ8dMI-aUB9gqninzqsMzwmMx6phbD8aBpTlYcWwA |
| | | // 县级 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjU2MDYyLCJ0eXBlIjoxLCJleHAiOjE3NDE3MDU5MTgsImNyZWF0ZWQiOjE3NDA0MDk5MTg3MDF9.k9ck3gWfVElSCl1uUI_5fZ3lEbFgtbQs_OaJku4I4bXoUO77kUnHsghkPBFdRknFHa49fTdAEdHn0wsb_XN5tg |
| | | let token = uni.getStorageSync('token') |
| | | let header = { |
| | | 'content-type': type ? 'application/x-www-form-urlencoded;charset=UTF-8' : 'application/json', |
| | | 'Authorization': 'Bearer ' + token, |
| | | 'Authorization': token, |
| | | 'lang': uni.getStorageSync('locale') === 'zh-Hans' ? 'zh_CN' : 'zh-tw', |
| | | } |
| | | const requestTask = uni.request({ |
| | |
| | | |
| | | const [unreadCount, setUnreadCount] = useState(0); |
| | | useEffect(() => { |
| | | const timer = setInterval(() => { |
| | | getUnreadCount().then((res: any) => { |
| | | setUnreadCount(res.data || 0); |
| | | }); |
| | | }, 1000 * 5) |
| | | // const timer = setInterval(() => { |
| | | // getUnreadCount().then((res: any) => { |
| | | // setUnreadCount(res.data || 0); |
| | | // }); |
| | | // }, 1000 * 5) |
| | | |
| | | return () => clearInterval(timer); |
| | | // return () => clearInterval(timer); |
| | | }, []); |
| | | |
| | | |
| | |
| | | */ |
| | | const okHandle = () => { |
| | | form.validateFields().then((values) => { |
| | | if (editData.deptId) { |
| | | values.deptId = editData.deptId; |
| | | if (editData.id) { |
| | | values.id = editData.id; |
| | | onUpdate(values); |
| | | } else { |
| | | onSave(values); |
| | |
| | | > |
| | | <Form layout="horizontal" {...formItemLayout} form={form} initialValues={{ isAuctioneer: 1 }}> |
| | | <Form.Item |
| | | name="deptName" |
| | | name="name" |
| | | required |
| | | label="职位名称" |
| | | rules={[{ required: true, message: '请输入职位名称' }]} |
| | |
| | | import { useRef, useState } from 'react'; |
| | | import { Access, useAccess } from 'umi'; |
| | | import AddAndEdit from './components/addAndEdit'; |
| | | import { add, edit, del, getList, updateStatus, resetPaswword } from './service'; |
| | | import { add, edit, del, getList } from './service'; |
| | | const Account = () => { |
| | | const actionRef = useRef(); |
| | | const addViewRef = useRef(); |
| | |
| | | const columns = [ |
| | | { |
| | | title: '职位名称', |
| | | dataIndex: 'deptName', |
| | | dataIndex: 'name', |
| | | }, |
| | | { |
| | | title: '操作', |
| | |
| | | columns={columns} |
| | | pagination={false} |
| | | request={async (params) => { |
| | | return await buildProTableDataSource(getList, params); |
| | | return buildProTableDataSource(getList, params); |
| | | }} |
| | | toolBarRender={(action, selectRows) => [ |
| | | <Space> |
| | |
| | | import { request } from '@umijs/max'; |
| | | |
| | | // 分页获取部门列表 |
| | | export const getList = async (data) => { |
| | | return request(`/system/dept/list`, { |
| | | export const getList = async (params) => { |
| | | console.log('111111111111',params); |
| | | |
| | | return request(`/api/huacheng-sangeshenbian/systemPost/list`, { |
| | | method: 'GET', |
| | | params:data |
| | | params |
| | | }); |
| | | } |
| | | |
| | | // 新增部门 |
| | | export const add = async (data) => { |
| | | return request('/system/dept', { |
| | | return request('/api/huacheng-sangeshenbian/systemPost/add', { |
| | | method: 'POST', |
| | | data, |
| | | }); |
| | |
| | | |
| | | // 修改部门 |
| | | export const edit = async (data) => { |
| | | return request('/system/dept', { |
| | | method: 'PUT', |
| | | return request('/api/huacheng-sangeshenbian/systemPost/edit', { |
| | | method: 'POST', |
| | | data |
| | | }); |
| | | } |
| | | |
| | | // 删除部门管理 |
| | | export const del = async (data) => { |
| | | return request(`/system/dept/${data}`, { |
| | | return request(`/api/huacheng-sangeshenbian/systemPost/delete/${data.id}`, { |
| | | method: 'DELETE', |
| | | }); |
| | | } |
| | |
| | | |
| | | |
| | | // import AddAndEdit from './components/addAndEdit'; |
| | | // import { getConfig, saveConfig } from './service'; |
| | | import { getSetting, addSetting } from './service'; |
| | | // const TabPane = Tabs.TabPane; |
| | | const Account = () => { |
| | | const actionRef = useRef(); |
| | |
| | | const addViewRef1 = useRef(); |
| | | const [form] = Form.useForm(); |
| | | const [tab, setTab] = useState('1'); |
| | | const [modalVisible, handleModalVisible] = useState(false); |
| | | const [selectedRowKeys, setSelectedRowKeys] = useState([]); |
| | | const changeStatusRef = useRef(); |
| | | const [addWarnVisible, handleAddWarnVisible] = useState(false); |
| | | const [dataSource, setDataSource] = useState([]); |
| | | const [data, setData] = useState([]); |
| | | const access = useAccess(); |
| | | |
| | | useEffect(() => { |
| | | getSetting().then(res => { |
| | | if (res.code === 200) { |
| | | setData(res.data); |
| | | form.setFieldsValue(res.data); |
| | | } |
| | | }) |
| | | }, []) |
| | | |
| | | const save = () => { |
| | | form.validateFields().then(async (values) => { |
| | | |
| | | values.id = 1 |
| | | sendRequest(addSetting, values).then(res => { |
| | | if (res.code === 200) { |
| | | |
| | | } |
| | | }) |
| | | }); |
| | | }; |
| | | |
| | |
| | | </span><span style={{ marginLeft: 8, color: '#a5a5a5' }}>超过时间未处理诉求,系统自动对该事件承办者发送短信提醒,并知会至上一级管理层进行督办。 |
| | | </span></div> |
| | | <Space style={{ marginTop: 20, display: 'flex', flexWrap: 'wrap' }}> |
| | | <Form.Item label="市级账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="市级账号" name="cityHandlingTime" rules={ |
| | | [{ required: true, message: '请输入市级账号' }] |
| | | }> |
| | | <InputNumber controls={false} precision={0} min={0} addonAfter="天内" ></InputNumber> |
| | | </Form.Item> |
| | | |
| | | <Form.Item label="区县账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="区县账号" name="districtHandlingTime" rules={ |
| | | [{ required: true, message: '请输入区县账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | |
| | | <Form.Item label="街道账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="街道账号" name="streetHandlingTime" rules={ |
| | | [{ required: true, message: '请输入街道账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | <Form.Item label="社区账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="社区账号" name="communityHandlingTime" rules={ |
| | | [{ required: true, message: '请输入社区账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | <Form.Item label="党员账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="党员账号" name="partyMemberHandlingTime" rules={ |
| | | [{ required: true, message: '请输入党员账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | |
| | | </span></div> |
| | | <Space style={{ marginTop: 20, display: 'flex', flexWrap: 'wrap' }}> |
| | | |
| | | <Form.Item label="市级账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="市级账号" name="cityDeadlineReminder" rules={ |
| | | [{ required: true, message: '请输入市级账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | |
| | | <Form.Item label="区县账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="区县账号" name="districtDeadlineReminder" rules={ |
| | | [{ required: true, message: '请输入区县账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | |
| | | <Form.Item label="街道账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="街道账号" name="streetDeadlineReminder" rules={ |
| | | [{ required: true, message: '请输入街道账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | <Form.Item label="社区账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="社区账号" name="communityDeadlineReminder" rules={ |
| | | [{ required: true, message: '请输入社区账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | | </Form.Item> |
| | | <Form.Item label="党员账号" name="isAuctioneer" rules={ |
| | | <Form.Item label="党员账号" name="partyMemberDeadlineReminder" rules={ |
| | | [{ required: true, message: '请输入党员账号' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | |
| | | <div style={{ marginBottom: 20 }}><span style={{ fontSize: '14px', fontWeight: 600 }}>*诉求处理时间: |
| | | </span><span style={{ marginLeft: 8, color: '#a5a5a5' }}>超过时间未处理诉求,系统自动对该事件承办者发送短信提醒,并知会至上一级管理层进行督办。 |
| | | </span></div> |
| | | <Form.Item label="添加后处理时间" name="isAuctioneer" rules={ |
| | | <Form.Item label="添加后处理时间" name="demandProcessingTime" rules={ |
| | | [{ required: true, message: '请输入添加后处理时间' }] |
| | | }> |
| | | <InputNumber precision={0} min={0} addonAfter="天内" controls={false}></InputNumber> |
| | |
| | | </Card> |
| | | <Access accessible={access['/work_order_transaction_management/work_order_item_configuration/save'] || false}> |
| | | <div style={{ marginTop: 20, display: 'flex', justifyContent: 'center' }}> |
| | | <Button type="primary" htmlType="submit" style={{ marginRight: 20 }}> |
| | | <Button type="primary" htmlType="submit" style={{ marginRight: 20 }} onClick={() => {save()}} > |
| | | 保存 |
| | | </Button> |
| | | </div> |
New file |
| | |
| | | import { request } from '@umijs/max'; |
| | | |
| | | // 获取工单事项配置 |
| | | export const getSetting = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/workOrderItemConfig/getWorkOrderItemConfigInfo`, { |
| | | method: 'GET', |
| | | params:data |
| | | }); |
| | | } |
| | | |
| | | // 配置工单事项配置 |
| | | export const addSetting = async (data) => { |
| | | return request(`/api/huacheng-sangeshenbian/workOrderItemConfig/addWorkOrderItemConfig`, { |
| | | method: 'POST', |
| | | data |
| | | }); |
| | | } |
| | |
| | | } |
| | | |
| | | export async function buildProTableDataSource(fun, params) { |
| | | params.pageNum = params.current; |
| | | params.pageNum = params.current || 1; |
| | | params.pageSize = params.pageSize || 10 |
| | | delete params.current |
| | | const response = await fun(params); |
| | | const data = Promise.resolve({ |