pyt
2025-02-24 6fd4e51524bf5eb46f856a3573657f4d09499edc
feat
3个文件已修改
2个文件已添加
251 ■■■■■ 已修改文件
H5/pages/delay/delay.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/delay/service.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/list/list.vue 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/空空如也@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/utils/request.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/delay/delay.vue
@@ -1,66 +1,79 @@
<template>
    <view class="pt-38">
<template>
    <view class="pt-38">
        <view class="br-16 shadow1 pl-31 pt-31 pr-31 pb-21 ml-31 mr-31">
            <view class="fs-27 font-bold">
                说明内容
            </view>
            <view class="mt-27 bgColor1 pt-25 pl-31 pr-31 pb-29 lh-38 fs-27">
                <view class="">
                    1、处理措施:记录为解决该问题所采取的具体措施,包括政策宣传、处理沟通、现场处理等方式。
                {{ info.comment || '' }}
            </view>
            <view v-if="info.images && info.images.length > 0" class="">
                <view class="fs-27 font-bold mt-38">
                    图片
                </view>
                <view class="">
                    2、处理时间:记录处理该问题的时间节点,包括开始处理时间、处理完成时间等。
                </view>
                <view class="">
                    3、参与人员:记录参与处理该问题的人员名单,包括走访人员、相关部门工作人员等。
                </view>
                <view class="">
                    4、结果概述:简要描述问题的处理结果,是否得到有效解决,是否达到走访对象的期望等。
                </view>
                <view class="">
                    5、后续跟进:如需进一步跟进或处理,记录后续跟进的计划、时间节点及责任人员。
                <view class="flex a-center j-between mt-27 wrap">
                    <image v-for="(item,index) in info.images" :key="index" :src="item" mode="aspectFill"
                        class="w-140 h-140 mr-15 shrink0 mb-10"></image>
                </view>
            </view>
            <view class="fs-27 font-bold mt-38">
                图片
            </view>
            <view class="flex a-center j-between mt-27 wrap">
                <image src="../../static/logo.png" mode="aspectFill" class="w-140 h-140 mr-15 shrink0 mb-10" v-for="item in 4" :key="item"></image>
            </view>
            <view class="fs-27 font-bold mt-28">
                视频
            </view>
            <view class="flex a-center j-between mt-27 wrap">
                <view class="relative mr-15 shrink0 mb-10" v-for="item in 4" :key="item">
                    <image src="../../static/logo.png" mode="aspectFill" class="w-140 h-140" ></image>
                    <image src="../../static/detailImg/open.png" mode="aspectFill" class="w100 h100 absolute top0 left0"></image>
            <view v-if="info.videos && info.videos.length > 0" class="">
                <view class="fs-27 font-bold mt-28">
                    视频
                </view>
                <view class="flex a-center j-between mt-27 wrap">
                    <view class="relative mr-15 shrink0 mb-10" v-for="(item,index) in info.videos" :key="item"
                        @click="toPlay(item)">
                        <video :controls="false" :show-center-play-btn="false" :src="item" class="w-140 h-140"
                            mode=""></video>
                        <image src="../../static/detailImg/open.png" mode="aspectFill"
                            class="w100 h100 absolute top0 left0"></image>
                    </view>
                </view>
            </view>
        </view>
        <view class="h-10 safe-b">
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
            }
        },
        methods: {
        }
    }
</script>
<style scoped>
    .shadow1 {
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0,0,0,0.1);
        </view>
    </view>
</template>
<script>
    import {
        getDelayDetail
    } from './service.js'
    export default {
        data() {
            return {
                info: {}
            }
        },
        onLoad(e) {
            getDelayDetail(e.id).then(res => {
                if (res.data.images) {
                    res.data.images = res.data.images.split(',')
                }
                if (res.data.videos) {
                    res.data.videos = res.data.videos.split(',')
                }
                this.info = res.data
            })
        },
        methods: {
            toPlay(url) {
                uni.navigateTo({
                    url: '/pages/work-detail/maxVideo?url=' + url
                })
            }
        }
    }
</script>
<style scoped>
    .shadow1 {
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
    }
    .bgColor1 {
        background-color: #FBFBFB;
    }
</style>
    }
</style>
H5/pages/delay/service.js
New file
@@ -0,0 +1,5 @@
import request from '@/utils/request.js'
export const getDelayDetail =(complaintId)=>{
    return request.get(`/api/huacheng-sangeshenbian/applet/complaint/delay-detail/${complaintId}`)
}
H5/pages/list/list.vue
@@ -2,35 +2,54 @@
    <view class="content">
        <view class="bgColor2 h-96 flex a-center fs-27  j-between txt-center shadow1 font-w400 color1"
            style="position: sticky;top: 0;">
            <view class="flex1 relative" :class="true && 'color2 font-bold'">
            <view @click="changeType('')" class="flex1 relative" :class="searchParams.type == '' && 'color2 font-bold'">
                <view class="relative zIndex1000">
                    全部
                </view>
                <view class="bgColor1">
                <view v-if="searchParams.type == ''" class="bgColor1"></view>
            </view>
            <view @click="changeType('0')" class="flex1 relative" :class="searchParams.type == '0' && 'color2 font-bold'">
                <view class="relative zIndex1000">
                    上报待审核
                </view>
                <view v-if="searchParams.type == '0'" class="bgColor1"></view>
            </view>
            <view class="flex1">
                上报待审核
            <view @click="changeType('1')" class="flex1 relative" :class="searchParams.type == '1' && 'color2 font-bold'">
                <view class="relative zIndex1000">
                    正在办理
                </view>
                <view v-if="searchParams.type == '1'" class="bgColor1"></view>
            </view>
            <view class="flex1">
                正在办理
            </view>
            <view class="flex1">
                办结
            <view @click="changeType('2')" class="flex1 relative" :class="searchParams.type == '2' && 'color2 font-bold'">
                <view class="relative zIndex1000">
                    办结
                </view>
                <view v-if="searchParams.type == '2'" class="bgColor1"></view>
            </view>
        </view>
        <view class="pl-31 pr-31">
        <view v-if="list.length == 0 && status == 'noMore'" class="mt-200">
            <image src="../../static/空空如也@2x.png" mode="widthFix" class="w100"></image>
            <view class="txt-center mt-94 fs-27 color9">
                暂无数据
            </view>
        </view>
        <view v-else class="pl-31 pr-31">
            <view class="mt-31 br-19 bgColor3 shadow2 oh pb-31" v-for="(item,index) in list" :key="item.id">
                <view class="pt-21 pl-27 pr-27 flex a-center j-between fs-27 font-bold">
                    <view class="">
                        诉求号:{{ item.serialNumber || '' }}
                    </view>
                    <view class="color3">
                    <view class="color3 flex a-center">
                        <view v-if="status == '2'" class="fs-23 font-w500 flex a-center pl-10 pr-12 mr-17 bgColor7 h-50 br-8 color8">
                            <view class="w-27 h-27 color3 bgColor2 txt-center br-18 fs-20 flex a-center j-center mr-17">
                                i
                            </view>
                            已超时{{ item.overTimeDays }}天
                        </view>
                        {{ statusObj[item.status] }}
                    </view>
                </view>
                <view class="mt-40 fs-23 pl-40 pr-40">
                <view v-if="['5','6'].includes(item.status)" class="mt-40 fs-23 pl-40 pr-40">
                    <view class="flex j-between a-center">
                        <view class="color4">
                            上报人:<text class="color5">{{ item.reporter || '' }}</text>
@@ -47,7 +66,7 @@
                </view>
                <view class="mt-27 ml-40 mr-40 br-19 bgColor4 pt-34 pb-34 fs-27 pl-27 pr-27 flex a-center j-between">
                    <text>{{ item.location || '' }}</text>
                    <image src="../../static/location.png" mode="aspectFill" class="w-31 h-31 ml-10 shrink0"></image>
                    <image src="../../static/position@2x.png" mode="aspectFill" class="w-31 h-31 ml-10 shrink0"></image>
                </view>
                <view class="ml-40 mr-40 mt-31 flex j-between a-center fs-27 txt-center">
                    <view class="">
@@ -75,7 +94,7 @@
                        </view>
                    </view>
                </view>
                <view class="fs-27 mt-31 ml-40 mr-40">
                <view v-if="item.status != '3'" class="fs-27 mt-31 ml-40 mr-40">
                    <view class="">
                        问题描述
                    </view>
@@ -83,12 +102,12 @@
                        {{ item.descriptionContent || '' }}
                    </view>
                </view>
                <view class="fs-27 mt-31 ml-40">
                <view v-if="item.status != '3' && item.images" class="fs-27 mt-31 ml-40">
                    <view class="">
                        描述图片
                    </view>
                    <view class="mt-19 flex wrap a-center">
                        <image v-for="(item1,index) in item.images" :key="index" :src="item1"
                        <image v-for="(item1,index) in item.images" :key="index" :src="item1" @click="previewImage(item.images,index)"
                            class="br-19 w-142 h-154 mr-13 mb-10 shrink0" mode="aspectFill"></image>
                    </view>
                </view>
@@ -98,18 +117,18 @@
                    <view class="txt-center fs-23 mt-27 color6">
                        创建时间:{{ item.createTime | formatTime }}
                    </view>
                    <view class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view class="h-58 lh-58 bgColor5 w-192 br-29 color7">
                    <view v-if="!['3','5'].includes(item.status)" class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view @click="addProgress(item.id)" class="h-58 lh-58 bgColor5 w-192 br-29 color7">
                            添加办理进度
                        </view>
                        <view class="ml-38 h-58 lh-58 bgColor6 w-192 br-29 color8">
                        <view @click="addResult(item.id)" class="ml-38 h-58 lh-58 bgColor6 w-192 br-29 color8">
                            办理结果录入
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view class="safe-b pt-20"></view>
    </view>
</template>
@@ -126,7 +145,7 @@
                searchParams: {
                    pageNum: 1,
                    pageSize: 10,
                    type: 0
                    type: '',//全部:不传,上报待审核:0,正在办理:1, 办结:2
                },
                list:[],
                status: 'loadMore',
@@ -143,14 +162,26 @@
            }
        },
        onReachBottom() {
            if (this.status == 'loadMore') {
                this.searchParams.pageNum += 1
                this.fetchList(this.searchParams,(e)=>{
                    this.list = [...this.list,...e.records]
                    if (this.list.length == e.total) {
                        this.status = 'noMore'
                    } else {
                        this.status = 'loadMore'
                    }
                })
            }
        },
        filters: {
            formatTime(val) {
                if (!val) return ''
                return dayjs(val).format('YYYY-MM-DD HH:mm:ss')
            }
        },
        onShow() {
            this.searchParams.pageNum = 1
            this.fetchList(this.searchParams,(e)=>{
                this.list = e.records || []
                if (this.list.length == e.total) {
@@ -167,19 +198,56 @@
                getList(params).then(res=>{
                    if (res.code == 200) {
                        res.data.records.map(item=>{
                            item.images = item.images.split(',')
                            if (item.images) {
                                item.images = item.images.split(',')
                            }
                        })
                        callback(res.data)
                    }
                })
            }
            },
            // 添加办理进度
            addProgress(id) {
                uni.navigateTo({
                    url:`/pages/progress/progress?id=${id}`
                })
            },
            // 办理结果录入
            addResult(id) {
                uni.navigateTo({
                    url:`/pages/result-entry/index?id=${id}`
                })
            },
            // 切换状态筛选
            changeType(type) {
                this.searchParams = {
                    pageNum: 1,
                    pageSize: 10,
                    type,//全部:不传,上报待审核:0,正在办理:1, 办结:2
                }
                this.fetchList(this.searchParams,(e)=>{
                    this.list = e.records || []
                    if (this.list.length == e.total) {
                        this.status = 'noMore'
                    } else {
                        this.status = 'loadMore'
                    }
                })
            },
            // 预览图片
            previewImage(list,index) {
                uni.previewImage({
                    urls: list,
                    current: index,
                });
            },
        }
    }
</script>
<style scoped lang="scss">
    .content {
        min-height: 100vh;
        height: 100%;
        background-color: #f7f7f7;
    }
@@ -235,6 +303,10 @@
    .color8 {
        color: #fff;
    }
    .color9 {
        color: #999999;
    }
    .bgColor1 {
        background: linear-gradient(270deg, #FFB318 0%, #FF330D 100%);
@@ -267,6 +339,10 @@
    .bgColor6 {
        background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%);
    }
    .bgColor7 {
        background: #FF4948;
    }
    .border1 {
        border-top: 2rpx solid #EDEEEF;
H5/static/空空如也@2x.png
H5/utils/request.js
@@ -19,8 +19,7 @@
    return new Promise(function(resolve, reject) {
        let token = uni.getStorageSync('token') ||
            'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MTY3NjA3MCwiY3JlYXRlZCI6MTc0MDM4MDA3MDQzM30.VbtID-0OdvLSLraK3Sr9cPbOLnvrrfobX-dHg3rScv7EUyu-qqPK_pXzd03wa5CgSQ7R6-m9R3NZqmPQEuQjEg'
        let token = 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0ODk0OTc5Nzk5NDA4NjUsInR5cGUiOjEsImV4cCI6MTc0MDQ2NjQ3MCwiY3JlYXRlZCI6MTc0MDM4MDA3MDQzN30.oOlB8GBE50WmV4Kw-Uuy33rQpQ-homoJQ61QXs34rkQIr-jFlAn9dUOgebitI9bz5PUaFImSldhY6vokRjmYlg'
        let header = {
            'content-type': type ? 'application/x-www-form-urlencoded;charset=UTF-8' : 'application/json',
            'Authorization': 'Bearer ' + token,