| | |
| | | <view class="allContent"> |
| | | <view class="topStatus"> |
| | | <view class="status"> |
| | | {{ ['正在办理', '延期办理', '超时办理', '已办结 ', '群众撤销', '上报待审核', '上级驳回', '延期待审核'][orderInfo.status] || '' }} |
| | | {{ ['正在办理', '延期办理', '超时办理', '已办结 ', '群众撤销', '上报待审核', '上级驳回', '延期待审核', '已办结'][orderInfo.status] || '' }} |
| | | </view> |
| | | <view class="flex a-center j-between mb-17"> |
| | | <view class="tit">当前状态</view> |
| | |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">联系电话</view> |
| | | <view class="value">{{ orderInfo.auditorPhone || '' }}</view> |
| | | <view class="flex a-center"> |
| | | <view class="value">{{ orderInfo.auditorPhone || '' }}</view> |
| | | <image @click.stop="callPhone(orderInfo.contactNumber)" src="../../static/tell.png" |
| | | class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">驳回原因</view> |
| | |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">联系电话</view> |
| | | <view class="value">{{ orderInfo.reporterPhone || '' }}</view> |
| | | <view class="flex a-center"> |
| | | <view class="value">{{ orderInfo.reporterPhone || '' }}</view> |
| | | <image @click.stop="callPhone(orderInfo.contactNumber)" src="../../static/tell.png" |
| | | class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | </view> |
| | | <view class="flex j-between" v-if="isParty"> |
| | | <view class="label">所属部门</view> |
| | |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label"> 联系电话</view> |
| | | <view class="value">{{ orderInfo.contactNumber || "" }}</view> |
| | | <view class="flex a-center"> |
| | | <view class="value">{{ orderInfo.contactNumber || '' }}</view> |
| | | <image @click.stop="callPhone(orderInfo.contactNumber)" src="../../static/tell.png" |
| | | class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">详细地址</view> |
| | |
| | | </view> |
| | | <view class="flex j-between"> |
| | | <view class="label">录入人联系方式</view> |
| | | <view class="value">{{ orderInfo.reportUserPhone || '' }}</view> |
| | | <view class="flex a-center"> |
| | | <view class="value">{{ orderInfo.reportUserPhone || '' }}</view> |
| | | <image @click.stop="callPhone(orderInfo.reportUserPhone)" src="../../static/tell.png" |
| | | class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | |
| | | <!-- 问题描述 --> |
| | | <view class="problem"> |
| | | <view class="title">问题描述</view> |
| | | <view v-for="(item,index) in getVoiceFile(orderInfo.voiceFile)" :key="index" |
| | | class="flex a-center j-between py-17 px-19 br-8 bgcolor1 mb-19"> |
| | | <view class="fs-27 lh-38">语音名字{{(index + 1) | numToWords}}</view> |
| | | <image v-if="!playFlag" @click.stop="playRecording(item)" src="../../static/24gf-playCircle@2x.png" |
| | | class="w-27 h-27 shrink0" /> |
| | | <image v-else @click.stop="pausePlaying" src="../../static/pausePlaying.png" |
| | | class="w-27 h-27 shrink0" /> |
| | | </view> |
| | | <view class="desc"> |
| | | <!-- <view class="top">{{ orderInfo.descriptionTitle || "" }}</view> --> |
| | | <!-- <view class="line1"></view> --> |
| | |
| | | <view class="topInfo"> |
| | | <view class="flex a-center j-between mb-15"> |
| | | <view class="flex a-center"> |
| | | <view class="name">办结人员:</view> |
| | | <view class="name shrink0">办结人员:</view> |
| | | <view class="value">{{ orderInfo.completionUsername || '' }}</view> |
| | | </view> |
| | | <view class="flex a-center"> |
| | | <view class="name">联系电话:</view> |
| | | <view class="value">{{ orderInfo.completionUserPhone || '' }}</view> |
| | | <view class="name shrink0">联系电话:</view> |
| | | <view class="flex a-center"> |
| | | <view class="value">{{ orderInfo.completionUserPhone || '' }}</view> |
| | | <image @click.stop="callPhone(orderInfo.completionUserPhone)" |
| | | src="../../static/tell.png" class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="flex a-center"> |
| | |
| | | <view class="btnAdd partyDown" @click="addProgress">添加办理进度</view> |
| | | <view class="btnAdd partyDown" @click="resultEntery">办理结果录入</view> |
| | | </view> |
| | | <!-- 党员并且属于本人工单上报 --> |
| | | <view class="btnButtom" v-if="isParty && orderInfo.status == 5 && !orderInfo.withdrawButtonStatus"> |
| | | <view class="btnAdd w100 txt-center" @click="revocation">撤回</view> |
| | | </view> |
| | | <!-- 党员显示 --> |
| | | <!-- v-if="[3].includes(orderInfo.status)" --> |
| | | <view class="btnButtom" v-if="orderInfo.evaluateButtonStatus == 0"> |
| | |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | |
| | | <CustomPopup ref="customPopup" :isOneBtn="true" @comfirm="comfirm"> |
| | | <view class="txt-center fs-31 lh-42 pt-44 pb-35 color5"> |
| | | 确认撤回当前审批操作吗 |
| | | </view> |
| | | </CustomPopup> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | workOrderDetail, |
| | | getUserInfo, |
| | | reportAudit, |
| | | delayAudit |
| | | delayAudit, |
| | | revoke |
| | | } from './service.js' |
| | | import { |
| | | mapActions, |
| | | mapState |
| | | } from "vuex"; |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | |
| | | scoreTopHeight: 0, //距离顶部多高 |
| | | |
| | | userInfo: {}, //个人信息 |
| | | isParty: false, //这是党员 |
| | | userInfo: uni.getStorageSync('userInfo'), //个人信息 |
| | | isParty: false, //true 党员 false 管理员 |
| | | }; |
| | | }, |
| | | computed: { |
| | | ...mapState(["playFlag"]), |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scoreTopHeight = e.scrollTop |
| | |
| | | formatTime(val) { |
| | | if (!val) return '' |
| | | return dayjs(val).format('YYYY-MM-DD HH:mm:ss') |
| | | }, |
| | | numToWords(val) { |
| | | const words = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] |
| | | // 处理 0-10 |
| | | if (val >= 0 && val <= 10) return words[val]; |
| | | // 处理 11-99 |
| | | if (val > 10 && val < 100) { |
| | | const ten = Math.floor(val / 10); |
| | | const unit = val % 10; |
| | | return `${ten > 1 ? words[ten] : ''}十${unit > 0 ? words[unit] : ''}`; |
| | | } |
| | | return val; // 超过99返回原数字 |
| | | } |
| | | }, |
| | | onShow() { |
| | |
| | | if (params.id) { |
| | | this.id = params.id |
| | | } |
| | | |
| | | getUserInfo().then(res => { |
| | | if (res.data == null || res.data.accountLevel == 5) { |
| | | this.isParty = true |
| | | } |
| | | this.userInfo = { |
| | | ...res.data |
| | | } |
| | | }) |
| | | this.isParty = uni.getStorageSync('userInfo').identity == 1 ? true : false |
| | | // getUserInfo().then(res => { |
| | | // if (res.data == null || res.data.accountLevel == 5) { |
| | | // this.isParty = true |
| | | // } |
| | | // this.userInfo = { |
| | | // ...res.data |
| | | // } |
| | | // }) |
| | | }, |
| | | methods: { |
| | | ...mapActions(["playRecording", "pausePlaying"]), |
| | | getVoiceFile(voiceFile) { |
| | | if (!voiceFile || voiceFile.length == 0) return [] |
| | | return voiceFile.split(',') |
| | | }, |
| | | callPhone(phoneNumber) { |
| | | uni.makePhoneCall({ |
| | | phoneNumber |
| | | }); |
| | | }, |
| | | // 确认撤回 |
| | | comfirm() { |
| | | revoke({ |
| | | complaintId: this.id |
| | | }).then(res => { |
| | | this.$refs.customPopup.closePopup() |
| | | uni.showToast({ |
| | | title: '撤回成功', |
| | | icon: 'none', |
| | | mask: true, |
| | | }) |
| | | this.getDetailInfo() |
| | | }) |
| | | }, |
| | | // 撤回 |
| | | revocation() { |
| | | this.$refs.customPopup.showPopup() |
| | | }, |
| | | open() {}, |
| | | close() {}, |
| | | viewImage(item) { |
| | |
| | | </style> |
| | | |
| | | <style lang="scss" scoped> |
| | | .bgcolor1 { |
| | | background: #FFF1F4; |
| | | box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .color5 { |
| | | color: #666160; |
| | | } |
| | | |
| | | // 处理 u-popup 组件层级过高,将 uni.showToast 覆盖问题 |
| | | /deep/ .u-transition.u-fade-enter-to.u-fade-enter-active { |
| | | z-index: 997 !important; |