H5/pages/add-progress/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
H5/pages/supervision/edit-supervision-progress.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
H5/pages/supervision/service.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
H5/pages/supervision/supervision-progress.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
H5/pages/supervision/supervision.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
H5/pages/work-detail/work-detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
H5/pages/add-progress/index.vue
@@ -236,7 +236,7 @@ timeout: 1000 * 45, name: 'file', header: { Authorization: cuni.getStorageSync('token') Authorization: uni.getStorageSync('token') }, success: (res) => { if (JSON.parse(res.data).code == 200) { H5/pages/supervision/edit-supervision-progress.vue
@@ -74,7 +74,7 @@ </view> </view> <view @click.stop="submit" class="mt-38 fs-35 lh-96 br-48 txt-center font-bold bgcolor6 color4 fixed" style="width: calc(100% - 62rpx);bottom: calc(env(safe-area-inset-bottom) + 10rpx);">确认添加</view> style="width: calc(100% - 62rpx);bottom: calc(env(safe-area-inset-bottom) + 10rpx);">确认</view> <view class="btn-box"></view> <view class="safe-box"></view> </view> @@ -82,7 +82,7 @@ <script> import { saveProcess, editProgress, getComplaintDetail } from './service' import config from '@/config/index.js' @@ -97,10 +97,16 @@ video: [], againCklicFlag: true, rulsFlag: false, progressId: '' } }, onLoad(params) { this.complaintId = params.id this.describe = JSON.parse(params.data).describe this.progressId = JSON.parse(params.data).id this.video = JSON.parse(params.data).video.split(',') this.imgUrls = JSON.parse(params.data).imgUrl.split(',') this.localImageUrls = JSON.parse(params.data).imgUrl.split(',') getComplaintDetail({ id: params.id }).then(res => { @@ -122,12 +128,13 @@ }) } let obj = { id: this.progressId, complaintId: this.complaintId, describe: this.describe, imgUrl: this.imgUrls.join(','), video: this.video.join(',') } saveProcess(obj).then(res => { editProgress(obj).then(res => { if (res.code == 200) { uni.showToast({ title: '提交成功', H5/pages/supervision/service.js
@@ -1,11 +1,25 @@ import request from '@/utils/request.js' // 工单列表 export const getList = (params) => { return request.post(`/api/huacheng-sangeshenbian/applet/complaint/list`, params) // 处理记录 export const getProcessingList = (data) => { return request.post(`/api/huacheng-sangeshenbian/applet/supervise/processing-record-page`, data) } // 问题驳回池 export const getRejectList = (data) => { return request.post(`/api/huacheng-sangeshenbian/applet/supervise/reject-record-page`, data) } // 工单详情 // 详情 export const getComplaintDetail = (params) => { return request.get('/api/huacheng-sangeshenbian/applet/complaint/detail', params) } // 编辑办理进度 export const editProgress = (params) => { return request.put('/api/huacheng-sangeshenbian/applet/complaint-progress/edit', params) } // 删除办理进度 export const delProgress = (id) => { return request.delete(`/api/huacheng-sangeshenbian/applet/complaint-progress/${id}`) } H5/pages/supervision/supervision-progress.vue
@@ -99,7 +99,8 @@ <script> import dayjs from '../../uni_modules/uview-ui/libs/util/dayjs' import { getComplaintDetail getComplaintDetail, delProgress } from './service' export default { data() { @@ -129,7 +130,6 @@ getComplaintDetail({ id: this.id }).then(res => { this.info = { ...res.data } @@ -137,7 +137,23 @@ }, methods: { deleteProgress() { delProgress(this.row.id).then(res => { uni.showToast({ icon: 'none', mask: true, title: '删除成功' }) this.$refs.customPopup.show = false setTimeout(() => { getComplaintDetail({ id: this.id }).then(res => { this.info = { ...res.data } }) }, 1500) }) }, toDelete(item) { this.row = item @@ -145,7 +161,7 @@ }, toEdit(item) { uni.navigateTo({ url: `/pages/supervision/edit-supervision-progress?id=${this.id}` url: `/pages/supervision/edit-supervision-progress?id=${this.id}&data=${JSON.stringify(item)}` }) }, callPhone(phoneNumber) { H5/pages/supervision/supervision.vue
@@ -2,25 +2,23 @@ <view class="content"> <view class="bgColor2 shadow1 pb-19" style="position: sticky;top: 0;z-index: 999;"> <view class="h-96 flex a-center fs-27 j-between txt-center font-w400 color1"> <view @click="changeType('1')" class="flex1 bgColor2 relative" :class="searchParams.type == '1' && 'color2 font-bold'"> <view @click="changeType(1)" class="flex1 bgColor2 relative" :class="type == 1 && 'color2 font-bold'"> <view class="relative zIndex1000"> 处理记录 </view> <view v-if="searchParams.type == '1'" class="bgColor1"></view> <view v-if="type == 1" class="bgColor1"></view> </view> <view @click="changeType('2')" class="flex1 bgColor2 relative" :class="searchParams.type == '2' && 'color2 font-bold'"> <view @click="changeType(2)" class="flex1 bgColor2 relative" :class="type == 2 && 'color2 font-bold'"> <view class="relative zIndex1000"> 问题驳回池 </view> <view v-if="searchParams.type == '2'" class="bgColor1"></view> <view v-if="type == 2" class="bgColor1"></view> </view> </view> <view class="flex a-center j-between mx-27 pl-38 border2"> <view class="flex a-center flex1"> <image src="../../static/search.png" mode="widthFix" class="w-31 h-31 shrink0 mr-13" /> <input v-model="searchParams.searchStr" class="fs-27 flex1" placeholder="输入姓名、联系电话关键字搜索" /> <input v-model="searchParams.keyword" class="fs-27 flex1" placeholder="输入姓名、联系电话关键字搜索" /> </view> <view @click="searchList" class="fs-23 lh-69 txt-center px-29 br-48 my-4 mx-4 bgcolor88">搜索</view> </view> @@ -101,18 +99,18 @@ <view class="mt-31 border1"> <view class="left"></view> <view class="right"></view> <view v-if="searchParams.type == '1'"> <view v-if="type == 1"> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>添加办理进度数</view> <view class="font-bold">10</view> <view class="font-bold">{{item.progressCount}}</view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>已下派次数</view> <view class="font-bold">10</view> <view class="font-bold">{{item.assignmentCount}}</view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>已上报次数</view> <view class="font-bold">10</view> <view class="font-bold">{{item.reportCount}}</view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>创建时间</view> @@ -122,31 +120,32 @@ <view v-else> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>申请时间</view> <view class="font-bold">2025-09-09 11:09:09</view> <view class="font-bold">{{ item.applyTime | formatTime }}</view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>申请人</view> <view class="flex a-center"> <view class="font-bold">李雷 13987654321</view> <image @click.stop="callPhone(item.contactNumber)" src="../../static/tell.png" <view class="font-bold">{{item.reporter}} {{item.reporterPhone}}</view> <image @click.stop="callPhone(item.reporterPhone)" src="../../static/tell.png" class="w-58 h-58 shrink0 ml-19" /> </view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>审批时间</view> <view class="font-bold">2025-09-09 11:09:09</view> <view class="font-bold">{{ item.auditTime | formatTime }}</view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view>审批人</view> <view class="flex a-center"> <view class="font-bold">李雷 13987654321</view> <image @click.stop="callPhone(item.contactNumber)" src="../../static/tell.png" <view class="font-bold">{{item.auditorName}} {{item.auditorPhone}}</view> <image @click.stop="callPhone(item.auditorPhone)" src="../../static/tell.png" class="w-58 h-58 shrink0 ml-19" /> </view> </view> <view class="flex a-center j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view class="flex j-between lh-38 mt-29 ml-38 mr-23 fs-27"> <view class="shrink0">驳回理由</view> <view style="max-width: 458rpx; text-align: right;font-weight: bold;">不同意当前申请不同意当前申请不同意当前申请 <view style="max-width: 458rpx; text-align: right;font-weight: bold;"> {{item.rejectReason}} </view> </view> </view> @@ -160,17 +159,17 @@ <script> import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js' import { getList getProcessingList, getRejectList } from './service.js' export default { data() { return { active: 1, type: 1, searchParams: { pageNum: 1, pageSize: 10, type: '1', searchStr: '' keyword: '' }, list: [], status: 'loadMore', @@ -185,7 +184,7 @@ '6': '上级驳回', '7': '延期待审核', '8': '已办结' } }, } }, onReachBottom() { @@ -220,6 +219,14 @@ }, methods: { searchList() { if (this.searchParams.keyword == '') { uni.showToast({ title: '请输入关键字搜索', icon: 'none', mask: true }) return } this.searchParams.pageNum = 1 this.fetchList(this.searchParams, (e) => { this.list = e.records || [] @@ -242,24 +249,19 @@ }, fetchList(params, callback) { if (this.status == 'loading') return this.status = 'loading' getList(params).then(res => { this.status = 'loading'; [getProcessingList, getRejectList][this.type - 1](params).then(res => { if (res.code == 200) { res.data.records.map(item => { if (item.images) { item.images = item.images.split(',') } }) callback(res.data) } }) }, // 切换状态筛选 changeType(type) { this.type = type this.searchParams = { pageNum: 1, pageSize: 10, type, //全部:不传,上报待审核:0,正在办理:1, 办结:2 } this.fetchList(this.searchParams, (e) => { this.list = e.records || [] H5/pages/work-detail/work-detail.vue
@@ -165,9 +165,9 @@ <!-- 问题描述 --> <view class="problem"> <view class="title">问题描述</view> <view v-for="(item,index) in 2" :key="index" <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">语音名字</view> <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" @@ -432,6 +432,18 @@ 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() { @@ -454,6 +466,10 @@ }, methods: { ...mapActions(["playRecording", "pausePlaying"]), getVoiceFile(voiceFile) { if (!voiceFile || voiceFile.length == 0) return [] return voiceFile.split(',') }, callPhone(phoneNumber) { uni.makePhoneCall({ phoneNumber