董国庆
2025-03-13 c32468ec4761f507810b405dc9b67f62438a7df1
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
11个文件已修改
8个文件已添加
531 ■■■■■ 已修改文件
H5/components/customPopup.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/main.js 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/add-progress/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/certificationAudit/certificationAudit.vue 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/certificationAudit/service.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/dispatchWorkOrder/dispatchWorkOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/index/index.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/list/list.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/problemReporting/problemReporting.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/progress/progress.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/work-detail/postpone-apply.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/pages/work-detail/work-detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/closeImg.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/man.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/popupBg.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/required.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/style/_app.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/static/women.png 补丁 | 查看 | 原始文档 | blame | 历史
H5/components/customPopup.vue
New file
@@ -0,0 +1,106 @@
<template>
    <u-popup :show="show" mode="center" bgColor="transparent" @open="openPopup" :closeOnClickOverlay="false" zIndex="10071">
        <view class="bgImg px-61 pt-46 pb-37 br-28">
            <view class="txt-center font-bold fs-35 color2">
                提示
            </view>
            <slot></slot>
            <view class="fs-27">
                <view v-if="!isOneBtn" class="flex a-center j-between">
                    <view @tap.stop="closeFun" class="h-77 lh-77 shrink0 txt-center px-79 br-48 mr-33 border1">
                        {{closeText}}
                    </view>
                    <view @tap.stop="comfirmFun" class="px-79 py-19 br-48 color1 bgcolor1">{{confirmText}}</view>
                </view>
                <view v-else @tap.stop="comfirmFun" class="lh-70 txt-center w100 br-48 color1 bgcolor1">
                    {{confirmText}}<span v-if="isCountDown && num != 0">({{num}}S)</span>
                </view>
            </view>
        </view>
    </u-popup>
</template>
<script>
    export default {
        props: {
            confirmText: {
                type: String,
                default: '确认'
            },
            closeText: {
                type: String,
                default: '关闭'
            },
            isOneBtn: {
                type: Boolean,
                default: false
            },
            isCountDown: {
                type: Boolean,
                default: false
            }
        },
        data() {
            return {
                timer: null,
                num: 3,
                show: false,
            }
        },
        methods: {
            openPopup() {
                this.timer = setInterval(() => {
                    this.num--
                    if (this.num == 1) {
                        setTimeout(() => {
                            this.num = 0
                            clearInterval(this.timer)
                        }, 900)
                    }
                }, 1000)
            },
            closeFun() {
                this.$emit('close')
            },
            comfirmFun() {
                if (this.isCountDown && this.num != 0) {
                    return
                }
                this.$emit('comfirm')
            },
            showPopup() {
                this.show = true
            },
            closePopup() {
                this.show = false
            },
        }
    }
</script>
<style scoped lang="scss">
    .bgImg {
        width: 516rpx;
        background-image: url('/static/popupBg.png');
        background-size: 100% 212rpx;
        background-repeat: no-repeat;
        background-color: #fff;
    }
    .border1 {
        border: 2rpx solid rgba(0, 0, 0, 0.8);
        box-sizing: border-box;
    }
    .color1 {
        color: #fff;
    }
    .color2 {
        color: rgba(0, 0, 0, 0.8);
    }
    .bgcolor1 {
        background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%);
    }
</style>
H5/main.js
@@ -1,28 +1,16 @@
import App from './App'
// #ifndef VUE3
import Vue from 'vue'
import store from '@/store/index.js'
import uView from '@/uni_modules/uview-ui'
import './uni.promisify.adaptor'
import CustomPopup from '@/components/customPopup.vue'
Vue.config.productionTip = false
Vue.prototype.$store = store
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
Vue.component('CustomPopup', CustomPopup)
App.mpType = 'app'
const app = new Vue({
    ...App
})
app.$mount()
// #endif
Vue.use(uView)
// #ifdef VUE3
import {
    createSSRApp
} from 'vue'
export function createApp() {
    const app = createSSRApp(App)
    return {
        app
    }
}
// #endif
app.$mount()
H5/pages.json
@@ -98,13 +98,20 @@
                "navigationBarTitleText": "办理进度录入",
                "navigationStyle": "custom"
            }
        },
        {
        },{
            "path": "pages/evaluate/evaluate",
            "style": {
                "navigationBarTitleText": "诉求评价",
                "navigationStyle": "custom"
            }
        },
        {
            "path" : "pages/certificationAudit/certificationAudit",
            "style" :
            {
                "navigationBarTitleText": "党员认证审核",
                "navigationStyle": "custom"
            }
        }
    ],
    "globalStyle": {
H5/pages/add-progress/index.vue
@@ -306,7 +306,7 @@
    }
    .bgcolor1 {
        background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
        background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
    }
    .bgcolor2 {
H5/pages/certificationAudit/certificationAudit.vue
New file
@@ -0,0 +1,327 @@
<template>
    <view>
        <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="px-31">
            <view class="mt-38 br-19 bgColor3 shadow2 oh pb-31" v-for="(item,index) in list" :key="item.id">
                <view class="pt-21 px-31 flex a-center j-between font-bold">
                    <view class="flex a-center">
                        <view class="fs-31 mr-23">习婕海</view>
                        <view v-if="!index" class="flex a-center pr-19 border3">
                            <image src="@/static/man.png" class="w-38 h-38 shrink0" />
                            <view class="fs-23 ml-12">
                                男
                            </view>
                        </view>
                        <view v-else class="flex a-center pr-19 border4">
                            <image src="@/static/women.png" class="w-38 h-38 shrink0" />
                            <view class="fs-23 ml-12">
                                女
                            </view>
                        </view>
                    </view>
                    <view class="color3 flex a-center fs-31">
                        待审核
                    </view>
                </view>
                <view class="mt-38 mx-31 pt-12 pb-23 px-31 br-19 bgColor8">
                    <view class="flex a-center j-between lh-38 mt-19 fs-27 color11">
                        <view class="font-w400">身份证号</view>
                        <view class="font-bold">500000000000000000</view>
                    </view>
                    <view class="flex a-center j-between lh-38 mt-19 fs-27 color11">
                        <view class="font-w400">联系电话</view>
                        <view class="font-bold">15729765305</view>
                    </view>
                    <view class="flex j-between lh-38 mt-19 fs-27 color11">
                        <view class="font-w400">服务社区</view>
                        <view class="font-bold">仁和区-仁和镇-仁和街社区</view>
                    </view>
                    <view class="flex j-between lh-38 mt-19 fs-27 color11">
                        <view class="font-w400">服务对象</view>
                        <view class="font-bold">文化小区一栋一单元</view>
                    </view>
                    <view class="flex j-between lh-38 mt-19 fs-27 color11">
                        <view class="font-w400">所在党组织</view>
                        <view class="font-bold max-w1">中共攀枝花市委组织部机关中共11攀枝花市委组织部机关</view>
                    </view>
                    <view class="flex wrap mt-19">
                        <image src="/static/logo.png" class="w-142 h-142 mr-12 shrink0 br-19 mb-12" />
                    </view>
                </view>
                <view class="mt-37 border1">
                    <view class="left"></view>
                    <view class="right"></view>
                    <view class="txt-center fs-23 mt-31 color6">
                        申请时间:{{ item.createTime | formatTime }}
                    </view>
                    <view class="flex a-center j-center fs-23 mt-29 txt-center">
                        <view @click.stop="refuse" class="h-58 lh-58 bgColor5 w-192 br-29 color10 border2">
                            拒绝
                        </view>
                        <view @click.stop="pass" class="ml-38 h-58 lh-58 bgColor6 w-192 br-29 color8">
                            通过
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view class="h-safe-b"></view>
        <CustomPopup ref="tipPoput" @close="closePopup" @comfirm="comfirmPopup">
            <view class="mt-50" :class="suditStatus ? 'mb-38' : 'mb-60'">
                <view class="txt-center fs-31 lh-42 color12">确认审核{{suditStatus ? '拒绝' : '通过'}}所选信息吗?</view>
                <view v-if="suditStatus" class="mt-38">
                    <view class="flex">
                        <image src="/static/required.png" class="w-10 h-10 mt-12 mr-15 shrink0" />
                        <view class="fs-31 lh-42 font-bold">拒绝理由:</view>
                    </view>
                    <view class="border5 br-19 mt-13 px-35 py-27 ">
                        <textarea v-model="reasonsRefusal" placeholder="请输入拒绝理由" class="fs-27 h-178 w100"></textarea>
                        <view v-if="showRequiredTip" class="fs-23 lh-33 color3">拒绝理由必填</view>
                    </view>
                </view>
            </view>
        </CustomPopup>
    </view>
</template>
<script>
    import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js'
    import {
        getList
    } from './service.js'
    export default {
        data() {
            return {
                searchParams: {
                    pageNum: 1,
                    pageSize: 10,
                },
                list: [{}, {}],
                status: 'loadMore',
                suditStatus: false,
                reasonsRefusal: '',
                showRequiredTip: false,
            }
        },
        filters: {
            formatTime(val) {
                if (!val) return ''
                return dayjs(val).format('YYYY-MM-DD HH:mm:ss')
            }
        },
        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'
                    }
                })
            }
        },
        onShow() {
        },
        onReady() {},
        methods: {
            comfirmPopup() {
                if (this.suditStatus) {
                    if (!this.reasonsRefusal) {
                        this.showRequiredTip = true
                        return
                    }
                }
                this.closePopup()
            },
            refuse() {
                this.suditStatus = true
                this.$refs.tipPoput.showPopup()
            },
            pass() {
                this.$refs.tipPoput.showPopup()
            },
            fetchList(params, callback) {
                if (this.status == 'loading') return
                this.status = 'loading'
                getList(params).then(res => {
                    if (res.code == 200) {
                        res.data.records.map(item => {
                            if (item.images) {
                                item.images = item.images.split(',')
                            }
                        })
                        callback(res.data)
                    }
                })
            },
            closePopup() {
                this.$refs.tipPoput.closePopup()
                this.$nextTick(() => {
                    this.suditStatus = false
                    this.showRequiredTip = false
                    this.reasonsRefusal = ''
                })
            },
        }
    }
</script>
<style scoped lang="scss">
    .shadow2 {
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
    }
    .color1 {
        color: #4C4C4C;
    }
    .color2 {
        color: #232323;
    }
    .color3 {
        color: #FF4948;
    }
    .color4 {
        color: #929191;
    }
    .color5 {
        color: #000;
    }
    .color6 {
        color: #666666;
    }
    .color7 {
        color: #727272;
    }
    .color8 {
        color: #fff;
    }
    .color9 {
        color: #999999;
    }
    .color10 {
        color: #636363;
    }
    .color11 {
        color: rgba(0, 0, 0, 0.88);
    }
    .color12 {
        color: rgba(0, 0, 0, 0.6);
    }
    .bgColor1 {
        background: linear-gradient(270deg, #FFB318 0%, #FF330D 100%);
        width: 58rpx;
        height: 12rpx;
        border-radius: 6rpx;
        position: absolute;
        left: 0;
        right: 0;
        bottom: -5rpx;
        margin: auto;
    }
    .bgColor2 {
        background-color: #fff;
    }
    .bgColor3 {
        background: linear-gradient(180deg, #FFDCDB 0%, rgba(255, 255, 255, 0) 138rpx, #fff 100%);
    }
    .bgColor4 {
        background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
    }
    .bgColor5 {
        background: #F3F3F3;
    }
    .bgColor6 {
        background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%);
    }
    .bgColor7 {
        background: #FF4948;
    }
    .bgColor8 {
        background: rgba(0, 0, 0, 0.03);
    }
    .border1 {
        border-top: 2rpx solid #EDEEEF;
        position: relative;
        .left {
            width: 40rpx;
            height: 40rpx;
            background-color: #F4F4F4;
            border-radius: 50%;
            position: absolute;
            left: -20rpx;
            top: -20rpx;
        }
        .right {
            width: 40rpx;
            height: 40rpx;
            background-color: #F4F4F4;
            border-radius: 50%;
            position: absolute;
            right: -20rpx;
            top: -20rpx;
        }
    }
    .border2 {
        border: 2rpx solid #E5E5E5;
        box-sizing: border-box;
    }
    .border3 {
        background: #E4EFFF;
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
        border-radius: 22rpx;
        border: 2rpx solid #5599FF;
        box-sizing: border-box;
        color: #1677FF;
    }
    .border4 {
        background: #FFEEF1;
        box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
        border-radius: 22rpx;
        border: 2rpx solid #F7636E;
        box-sizing: border-box;
        color: #E5484D;
    }
    .border5 {
        border: 2rpx solid #E9E9E9;
    }
    .max-w1 {
        width: 329rpx;
    }
</style>
H5/pages/certificationAudit/service.js
New file
@@ -0,0 +1,5 @@
import request from '@/utils/request.js'
// 工单列表
export const getList =(params)=>{
    return request.post(`/api/huacheng-sangeshenbian/applet/complaint/list`,params)
}
H5/pages/dispatchWorkOrder/dispatchWorkOrder.vue
@@ -202,7 +202,7 @@
                display: flex;
                justify-content: space-between;
                // height: 106rpx;
                background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
                background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
                box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
                border-radius: 19rpx;
                align-items: center;
H5/pages/index/index.vue
@@ -39,7 +39,7 @@
                    <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="showData">
                    <image class="w-81 h-77 ml-38" src="/static/home/img8.png" mode=""></image>
                    <text class="ml-37 font-bold">统计分析</text>
@@ -98,6 +98,23 @@
            </view>
        </view>
        <popupCertificate :show="isClick" @onCancel="isClick=false"></popupCertificate>
        <!-- 用户多个角色时切换角色弹窗 -->
        <u-popup :show="changeRolePopup" round="16rpx" @close="changeRolePopup = false">
            <view class="relative">
                <image @tap.stop="changeRolePopup = false" src="@/static/closeImg.png" class="w-35 h-35 absolute"
                    style="right: 31rpx;top: 46rpx;" />
                <view class="txt-center pt-38 pb-40 fs-35 lh-48 font-bold">选择角色</view>
                <view class="lineBox mb-10"></view>
                <view style="height: 546rpx;overflow-y: auto;">
                    <view @tap.stop="changeRole(item)" v-for="(item,index) in 10" :key="index"
                        :class="index == activeRole && 'bgcolor2'"
                        class="mt-38 bgcolor1 br-58 fs-31 ml-54 mr-62 py-37 txt-center">
                        <view>XXXXXXXX管理员</view>
                    </view>
                </view>
            </view>
        </u-popup>
    </view>
</template>
@@ -130,6 +147,8 @@
                isLoading: false,
                noreadlist: [],
                noreadlists: [],
                changeRolePopup: true,
                activeRole: 1,
            }
        },
        onPullDownRefresh() {
@@ -153,6 +172,10 @@
            this.getappletcinfo()
        },
        methods: {
            changeRole(item) {
                this.activeRole = item - 1
                this.changeRolePopup = false
            },
            Allread() {
                getread().then(resp => {
@@ -290,6 +313,16 @@
    .color4 {
        color: rgba(0, 0, 0, 0.4);
    }
    .bgcolor1 {
        background: #F7F7F7;
    }
    .bgcolor2 {
        color: #fff;
        background: #FC8D55;
        box-shadow: 0rpx 4rpx 19rpx 0rpx rgba(239, 119, 58, 0.5);
    }
    .bg1 {
@@ -465,4 +498,10 @@
        color: #FFFFFF;
        font-weight: 600;
    }
    .lineBox {
        width: 100%;
        height: 1rpx;
        background: #E5E5E5;
    }
</style>
H5/pages/list/list.vue
@@ -346,7 +346,7 @@
    }
    .bgColor4 {
        background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
        background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
    }
    .bgColor5 {
H5/pages/problemReporting/problemReporting.vue
@@ -143,7 +143,7 @@
                display: flex;
                justify-content: space-between;
                // height: 106rpx;
                background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
                background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
                box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1);
                border-radius: 19rpx;
                align-items: center;
H5/pages/progress/progress.vue
@@ -171,7 +171,7 @@
    }
    .bgcolor1 {
        background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
        background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
    }
    .bgcolor2 {
H5/pages/work-detail/postpone-apply.vue
@@ -327,7 +327,7 @@
    }
    .bgcolor1 {
        background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
        background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
    }
    .bgcolor2 {
H5/pages/work-detail/work-detail.vue
@@ -770,7 +770,7 @@
            .addressCard {
                margin: 33rpx 10rpx;
                padding: 33rpx 27rpx;
                background: linear-gradient(270deg, rgba(255, 241, 0, 0.5) 0%, rgba(255, 249, 172, 0.25) 48%, rgba(255, 255, 255, 0.2) 100%, #FFFFFF 100%);
                background: linear-gradient( 270deg, rgba(255,241,0,0.5) 0%, rgba(255,249,172,0.25) 48%, rgba(255,255,255,0.2) 100%, #FFFFFF 100%);
                border-radius: 19rpx;
                display: flex;
                justify-content: space-between;
H5/static/closeImg.png
H5/static/man.png
H5/static/popupBg.png
H5/static/required.png
H5/static/style/_app.scss
@@ -1216,6 +1216,9 @@
.safe-b {
    padding-bottom: env(safe-area-inset-bottom);
}
.h-safe-b{
    height: calc(env(safe-area-inset-bottom) + 10rpx);
}
.underline {
    text-decoration: underline;
}
H5/static/women.png