| | |
| | | <view class="img-icon"> |
| | | <image class="w-19 h-19" @click="previewImage(index)" src="/static/Appeal/amplify.png" |
| | | mode=""></image> |
| | | <image class="w-19 h-19 ml-35" @click="deletimg(item)" src="/static/Appeal/trash.png" mode=""> |
| | | <image class="w-19 h-19 ml-35" @click="deletimg(item)" src="/static/Appeal/trash.png" |
| | | mode=""> |
| | | </image> |
| | | </view> |
| | | </view> |
| | |
| | | <text class="w-108 fs-27 font-bold mr-85">视频</text> |
| | | <view class="mt-27 flex a-center"> |
| | | <view class="img mr-15" v-for="item,index in videos" :key="index"> |
| | | <video :controls="false" :show-center-play-btn="false" :src="item" class="w-140 h-140" mode=""></video> |
| | | <video :controls="false" :show-center-play-btn="false" :src="item" class="w-140 h-140" |
| | | mode=""></video> |
| | | <view class="img-icon"> |
| | | <image class="w-19 h-19" @click="gotoPage(item)" src="/static/Appeal/amplify.png" mode=""></image> |
| | | <image class="w-19 h-19 ml-35" @click="deletvideo(item)" src="/static/Appeal/trash.png" mode=""></image> |
| | | <image class="w-19 h-19" @click="gotoPage(item)" src="/static/Appeal/amplify.png" mode=""> |
| | | </image> |
| | | <image class="w-19 h-19 ml-35" @click="deletvideo(item)" src="/static/Appeal/trash.png" |
| | | mode=""></image> |
| | | </view> |
| | | </view> |
| | | <image src="/static/Appeal/add.png" class="w-140 h-140" mode="" @click="uploadVideo"></image> |
| | |
| | | detailedAddress: '', |
| | | descriptionTitle: '', |
| | | descriptionContent: '', |
| | | latitude:'', |
| | | longitude:'', |
| | | latitude: '', |
| | | longitude: '', |
| | | images: [], |
| | | videos: [], |
| | | }; |
| | |
| | | this.images = this.images.filter(item => item != e) |
| | | |
| | | }, |
| | | deletvideo(e){ |
| | | deletvideo(e) { |
| | | this.videos = this.videos.filter(item => item != e) |
| | | }, |
| | | gotoPage(e){ |
| | | gotoPage(e) { |
| | | uni.navigateTo({ |
| | | url:`/pages/work-detail/maxVideo?url=${e}` |
| | | url: `/pages/work-detail/maxVideo?url=${e}` |
| | | }) |
| | | }, |
| | | getproblem() { |
| | | getproblem().then((resp => { |
| | | console.log(resp, '问题类型') |
| | | this.columns =[resp.data.map(item=>{ |
| | | this.columns = [resp.data.map(item => { |
| | | return item.name |
| | | })] |
| | | })) |
| | | }, |
| | | submit() { |
| | | const preciseRegex = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; |
| | | if(!this.time){ |
| | | if (!this.time) { |
| | | uni.showToast({ |
| | | title:'请选择时间', |
| | | icon:'none' |
| | | title: '请选择时间', |
| | | icon: 'none' |
| | | }) |
| | | |
| | | }else if(!this.problemType){ |
| | | |
| | | } else if (!this.problemType) { |
| | | uni.showToast({ |
| | | title:'请选择问题类型', |
| | | icon:'none' |
| | | title: '请选择问题类型', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.name){ |
| | | } else if (!this.name) { |
| | | uni.showToast({ |
| | | title:'请输入群众姓名', |
| | | icon:'none' |
| | | title: '请输入群众姓名', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.contactNumber){ |
| | | } else if (!this.contactNumber) { |
| | | uni.showToast({ |
| | | title:'请输入联系电话', |
| | | icon:'none' |
| | | title: '请输入联系电话', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!preciseRegex.test(this.contactNumber)){ |
| | | } else if (!preciseRegex.test(this.contactNumber)) { |
| | | uni.showToast({ |
| | | title:'请输入正确的手机号', |
| | | icon:'none' |
| | | title: '请输入正确的手机号', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.location){ |
| | | } else if (!this.location) { |
| | | uni.showToast({ |
| | | title:'请选择地点', |
| | | icon:'none' |
| | | title: '请选择地点', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.detailedAddress){ |
| | | } else if (!this.detailedAddress) { |
| | | uni.showToast({ |
| | | title:'请输入详细地址', |
| | | icon:'none' |
| | | title: '请输入详细地址', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.descriptionTitle){ |
| | | } else if (!this.descriptionTitle) { |
| | | uni.showToast({ |
| | | title:'请输入问题标题', |
| | | icon:'none' |
| | | title: '请输入问题标题', |
| | | icon: 'none' |
| | | }) |
| | | }else if(!this.descriptionContent){ |
| | | } else if (!this.descriptionContent) { |
| | | uni.showToast({ |
| | | title:'请输入问题描述', |
| | | icon:'none' |
| | | title: '请输入问题描述', |
| | | icon: 'none' |
| | | }) |
| | | }else if(this.images==0){ |
| | | } else if (this.images == 0) { |
| | | uni.showToast({ |
| | | title:'请上传图片', |
| | | icon:'none' |
| | | title: '请上传图片', |
| | | icon: 'none' |
| | | }) |
| | | }else if(this.videos==0){ |
| | | } else if (this.videos == 0) { |
| | | uni.showToast({ |
| | | title:'请上传视频', |
| | | icon:'none' |
| | | title: '请上传视频', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | const data = { |
| | |
| | | name: this.name, |
| | | contactNumber: this.contactNumber, |
| | | location: this.location, |
| | | latitude:this.latitude, |
| | | longitude:this.longitude, |
| | | latitude: this.latitude, |
| | | longitude: this.longitude, |
| | | detailedAddress: this.detailedAddress, |
| | | descriptionTitle: this.descriptionTitle, |
| | | descriptionContent: this.descriptionContent, |
| | |
| | | } |
| | | save(data).then(resp => { |
| | | console.log(resp, '保存'); |
| | | if(resp.code==200){ |
| | | if (resp.code == 200) { |
| | | uni.showToast({ |
| | | title:'保存成功', |
| | | icon:'none' |
| | | title: '保存成功', |
| | | icon: 'none' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1500) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | icon: 'none', |
| | | title: '下派成功' |
| | | }) |
| | | uni.navigateBack() |
| | | uni.navigateBack({ |
| | | delta: 2 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | '3': '已办结',
|
| | | '4': '群众撤销',
|
| | | '5': '上报待审核',
|
| | | '6': '上级驳回'
|
| | | '6': '上级驳回',
|
| | | '7': '延期待审核'
|
| | | }
|
| | | }
|
| | | },
|
| | |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | uni.navigateBack({ |
| | | delta: 2 |
| | | }) |
| | | }, 1500) |
| | | } |
| | | }) |
| | |
| | | </view> |
| | | </view> |
| | | <view class="br-19 mt-38 bs-1 pt-35 pb-33 px-31"> |
| | | <view class="fs-27 lh-38 font-bold">办理进度描述</view> |
| | | <view class="fs-27 lh-38 font-bold">延期申请说明</view> |
| | | <textarea v-model="describe" class="pt-25 pl-31 mt-27 fs-27 br-8 bgcolor4" |
| | | :class="(rulsFlag && !describe) && 'bgcolor-border'" style="height: 365rpx;width: calc(100% - 31rpx);" |
| | | placeholder="请输入办理进度描述" /> |
| | | placeholder="请输入延期申请说明" /> |
| | | <view v-if="rulsFlag && !describe" class="flex a-center mt-19"> |
| | | <image src="@/static/noNull.png" class="w-35 h-35 mr-13 shrink0" /> |
| | | <view class="fs-23 color99">办理进度描述不能为空</view> |
| | | <view class="fs-23 color99">请输入延期申请说明</view> |
| | | </view> |
| | | <view class="fs-27 mt-38 lh-38 font-bold">图片</view> |
| | | <view class="flex wrap mt-27"> |
| | |
| | | mask: true |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | uni.navigateBack({ |
| | | delta: 2 |
| | | }) |
| | | }, 1500) |
| | | } else { |
| | | uni.showToast({ |
| | |
| | | import request from '@/utils/request.js' |
| | | |
| | | export const list = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/list`, params) |
| | | } |
| | | // 党员端 |
| | | // 党员端-工单详情 |
| | | export const workOrderDetail = (params) => { |
| | |
| | | export const getUserInfo = (params) => { |
| | | return request.get(`/api/huacheng-sangeshenbian/applet/home/current-user-info`, params) |
| | | } |
| | | //获取三个身边当前用户信息 用于判断用户是否是上级 |
| | | // 问题上报审核 |
| | | export const reportAudit = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/reportAudit`, params, 'JSON') |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/reportAudit`, params, ) |
| | | } |
| | | |
| | | // 延期申请 |
| | | export const saveProcess = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/saveDelay`, params, ) |
| | | } |
| | | // 延期申请 |
| | | // 延期申请审核 |
| | | export const delayAudit = (params) => { |
| | | return request.post(`/api/huacheng-sangeshenbian/applet/complaint/delayAudit`, params, ) |
| | | } |
| | |
| | | </view> |
| | | <view class="allContent"> |
| | | <view class="topStatus"> |
| | | <view class="status">{{['正在办理','延期办理','超时办理','已办结 ','群众撤销','上报待审核','上级驳回'][orderInfo.status] ||''}} |
| | | <view class="status"> |
| | | {{['正在办理','延期办理','超时办理','已办结 ','群众撤销','上报待审核','上级驳回','延期待审核'][orderInfo.status] ||''}} |
| | | </view> |
| | | <view class="flex a-center j-between mb-17"> |
| | | <view class="tit">当前状态</view> |
| | | <!-- 延期状态 --> |
| | | <view v-if="orderInfo.status==1" class="flex a-center"> |
| | | <view v-if="orderInfo.status==1" class="flex a-center" @click.stop="toDelayDetail()"> |
| | | <image src="../../static/detailImg/explain.png" class="plainIcon shrink0"></image> |
| | | <view class="explain">延期情况说明</view> |
| | | </view> |
| | |
| | | <!-- 已完结诉求信息 已办结--> |
| | | <view class="mt-19 flex a-center j-between topMore" v-if="orderInfo.status==3"> |
| | | <view class="name">诉求信息</view> |
| | | <view class="flex a-center"> |
| | | <view class="flex a-center" @click.stop="toProgressDetail"> |
| | | <view class="more">办理进度</view> |
| | | <image src="../../static/detailImg/right1.png" class="moreIcon shrink0"></image> |
| | | </view> |
| | |
| | | </view> |
| | | |
| | | <!-- 上报后的状态 --> |
| | | <view class="card1" v-if="orderInfo.status==6 ||orderInfo.status==5 "> |
| | | <view class="card1" v-if="[6,7,5].includes(orderInfo.status)"> |
| | | <!-- 上报上级上级驳回--> |
| | | <view class="flex j-between" v-if="orderInfo.status==6"> |
| | | <view class="flex flex-column a-center mr-46"> |
| | |
| | | <view class="infoCard mb-46"> |
| | | <view class="flex j-between"> |
| | | <view class="label">审核时间</view> |
| | | <view class="value">张三</view> |
| | | <view class="value">{{orderInfo.auditTime|formatTime}}</view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">审核人</view> |
| | | <view class="value">13987654321</view> |
| | | <view class="value">{{orderInfo.auditorName||''}}</view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">联系电话</view> |
| | | <view class="value">XXXXXXX部门</view> |
| | | <view class="value">{{orderInfo.auditorPhone||''}}</view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">驳回原因</view> |
| | | <view class="value">上报说明上报说明上报说明上报上报说明上报说明上报说明上报上报说明上报说明上报说明上报</view> |
| | | <view class="value">{{orderInfo.rejectReason||''}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- 上报待上级审核--待审核状态显示 --> |
| | | <view class="flex j-between"> |
| | | <view class="flex flex-column j-center mr-46"> |
| | | <view class="flex flex-column mr-46"> |
| | | <image src="../../static/detailImg/Ovaled.png" class="topIcon shrink0"></image> |
| | | </view> |
| | | <view class="infoCard"> |
| | | <view class="flex j-between"> |
| | | <view class="label">上报人</view> |
| | | <view class="value">{{orderInfo.reportName||''}}</view> |
| | | <view class="value">{{orderInfo.reporter||''}}</view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">联系电话</view> |
| | | <view class="value">{{orderInfo.contactNumber||''}}</view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="flex j-between" v-if="!isParty"> |
| | | <view class="label">所属部门</view> |
| | | <view class="value">{{orderInfo.departmentName||""}}</view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">详细地址</view> |
| | | <view class="value">{{orderInfo.location||''}}</view> |
| | | <view class="value">{{orderInfo.detailedAddress||''}}</view> |
| | | </view> |
| | | <!-- 上级端需要的字段 --> |
| | | <view v-if="!isParty"> |
| | |
| | | </view> |
| | | <view class="flex a-center"> |
| | | <view class="name">办结时间:</view> |
| | | <view class="value">{{orderInfo.completionTime||''}}</view> |
| | | <view class="value">{{orderInfo.completionTime|formatTime}}</view> |
| | | </view> |
| | | </view> |
| | | <view class="title">办结结果描述</view> |
| | |
| | | <view class="proLine"> |
| | | </view> |
| | | </view> |
| | | <view> |
| | | <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"> |
| | |
| | | </view> |
| | | |
| | | <!-- 上级显示 --> |
| | | <view class="btnButtom" v-if="[0,1,2].includes(orderInfo.status) && !isParty"> |
| | | <view class="btnButtom" v-if="[0,1,2,6].includes(orderInfo.status) && !isParty"> |
| | | <view class="btnDown" @click.stop="toUp" v-if="userInfo.accountLevel>1">问题上报</view> |
| | | <view class="btnDown" @click.stop="toDown">诉求下派</view> |
| | | <view class="btnAdd" @click="addProgress">添加办理进度</view> |
| | | <view class="btnAdd" @click="resultEntery">办理结果录入</view> |
| | | </view> |
| | | <view class="btnButtom" v-if="[1,5].includes(orderInfo.status) && !isParty"> |
| | | <view class="btnButtom" v-if="[5,7].includes(orderInfo.status) && !isParty"> |
| | | <view class="cancel" @click.stop="showPop=true">驳回</view> |
| | | <view class="sure" @click.stop="submitReSolve">审核通过</view> |
| | | </view> |
| | | <!-- 上级显示 --> |
| | | |
| | | <!-- 党员显示 --> |
| | | <view class="btnButtom" v-if="[0,1,2].includes(orderInfo.status) && isParty"> |
| | | <view class="btnButtom" v-if="[0,1,2,6].includes(orderInfo.status) && isParty"> |
| | | <view class="btnDown partyUp" @click.stop="toUp">问题上报</view> |
| | | <view class="btnAdd partyDown" @click="addProgress">添加办理进度</view> |
| | | <view class="btnAdd partyDown" @click="resultEntery">办理结果录入</view> |
| | |
| | | import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js' |
| | | import { |
| | | workOrderDetail, |
| | | list, |
| | | getUserInfo, |
| | | reportAudit, |
| | | delayAudit |
| | |
| | | } |
| | | }, |
| | | onShow() { |
| | | list({ |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }).then(res => { |
| | | |
| | | }) |
| | | this.getDetailInfo() |
| | | }, |
| | | onLoad(params) { |
| | |
| | | }, |
| | | // 确认驳回 |
| | | submitReject() { |
| | | if (!this.this.rejectText) { |
| | | if (!this.rejectText) { |
| | | return uni.showToast({ |
| | | duration: 1500, |
| | | title: '请输入驳回原因', |
| | |
| | | rejectReason: this.rejectText |
| | | }).then(res => { |
| | | this.showPop = false |
| | | this.getDetailInfo() |
| | | // this.getDetailInfo() |
| | | uni.navigateBack() |
| | | }) |
| | | } else { //延期 |
| | | delayAudit({ |
| | |
| | | rejectReason: this.rejectText |
| | | }).then(res => { |
| | | this.showPop = false |
| | | this.getDetailInfo() |
| | | // this.getDetailInfo() |
| | | uni.navigateBack() |
| | | }) |
| | | } |
| | | |
| | |
| | | id: this.id, |
| | | auditResult: 1, |
| | | }).then(res => { |
| | | this.getDetailInfo() |
| | | // this.getDetailInfo() |
| | | uni.navigateBack() |
| | | }) |
| | | } else { //延期 |
| | | delayAudit({ |
| | | complaintId: this.id, |
| | | auditResult: 1, |
| | | }).then(res => { |
| | | this.getDetailInfo() |
| | | // this.getDetailInfo() |
| | | uni.navigateBack() |
| | | }) |
| | | } |
| | | }, |
| | |
| | | uni.navigateTo({ |
| | | url: `/pages/result-entry/index?id=${this.id}` |
| | | }) |
| | | } |
| | | }, |
| | | toProgressDetail() { |
| | | uni.navigateTo({ |
| | | url: '/pages/progress/progress?type=1&id=' + this.id |
| | | }) |
| | | }, |
| | | toDelayDetail() { |
| | | uni.navigateTo({ |
| | | url: '/pages/delay/delay?type=1&id=' + this.id |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | |
| | | let token = |
| | | 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MDQ2NjQ3MCwiY3JlYXRlZCI6MTc0MDM4MDA3MDQzN30.oOlB8GBE50WmV4Kw-Uuy33rQpQ-homoJQ61QXs34rkQIr-jFlAn9dUOgebitI9bz5PUaFImSldhY6vokRjmYlg' |
| | | //党员 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MDQ2NjQ3MCwiY3JlYXRlZCI6MTc0MDM4MDA3MDQzN30.oOlB8GBE50WmV4Kw-Uuy33rQpQ-homoJQ61QXs34rkQIr-jFlAn9dUOgebitI9bz5PUaFImSldhY6vokRjmYlg |
| | | // 社区 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE1OTAxNzYwNTgxNTY1NDgwOTgsInR5cGUiOjEsImV4cCI6MTc0MTcwNTE1OSwiY3JlYXRlZCI6MTc0MDQwOTE1OTEwMH0.AmeZFq2Pj2y2bRF1AolsRWHA4ehobBdx1-LtQHIJzub8WjEh_TxZ-PTEI7uiujlLWKhJE07PCVCggAdeuF3UIA |
| | | // 市 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0MjE4MjgwODU4Mzc4MjYsInR5cGUiOjEsImV4cCI6MTc0MTY5ODg0OCwiY3JlYXRlZCI6MTc0MDQwMjg0ODMzN30.7IYRD37yTkhqcnKyXWcqKk_iTisMp3ar_ByfuVR7Go9rK8ZnGJrlwC3z4NF_ly7IIoBHgE2E4IAvfm3ccam8wg |
| | | //街道 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjY2OTc5LCJ0eXBlIjoxLCJleHAiOjE3NDE3MDU4NDMsImNyZWF0ZWQiOjE3NDA0MDk4NDMyNTZ9.MOPT3X3Cw9AUmeuIpqDA1a1xZd7V85NSraJddxCrPHvOkaZ8dMI-aUB9gqninzqsMzwmMx6phbD8aBpTlYcWwA |
| | | // 县级 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjU2MDYyLCJ0eXBlIjoxLCJleHAiOjE3NDE3MDU5MTgsImNyZWF0ZWQiOjE3NDA0MDk5MTg3MDF9.k9ck3gWfVElSCl1uUI_5fZ3lEbFgtbQs_OaJku4I4bXoUO77kUnHsghkPBFdRknFHa49fTdAEdHn0wsb_XN5tg |
| | | let header = { |
| | | 'content-type': type ? 'application/x-www-form-urlencoded;charset=UTF-8' : 'application/json', |
| | | 'Authorization': 'Bearer ' + token, |