Lou
2024-01-18 412bc13ca1f70600eb0fb1e0f7c78785332d2c26
更新
3 files modified
2 files added
582 ■■■■■ changed files
pages.json 18 ●●●●● patch | view | raw | blame | history
subPackage/bs/views/repair.vue 4 ●●● patch | view | raw | blame | history
subPackage/house/houseNumber/index.vue 4 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/auditList.vue 289 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/reportList.vue 267 ●●●●● patch | view | raw | blame | history
pages.json
@@ -411,6 +411,15 @@
                    }
                },
                {
                    "path": "views/auditList",
                    "style": {
                        "navigationBarTitleText": "标签事件",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "views/cshw",
                    "style": {
                        "onReachBottomDistance": 10,
@@ -448,6 +457,15 @@
                    }
                },
                {
                    "path": "views/reportList",
                    "style": {
                        "navigationBarTitleText": "报修报事",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "views/reportAudit",
                    "style": {
                        "navigationBarTitleText": "报事报修处理",
subPackage/bs/views/repair.vue
@@ -155,7 +155,9 @@
            },
            getStatistics() {
                getStatistics().then(res => {
                getStatistics({
                    houseCode: uni.getStorageSync("siteInfo").houseCode
                }).then(res => {
                    this.statistic = res.data
                })
            },
subPackage/house/houseNumber/index.vue
@@ -374,9 +374,9 @@
            navTo(type) {
                if (type == 1) {
                    this.$u.func.globalNavigator(`/subPackage/workbench/views/report?code=${this.stdId}`)
                    this.$u.func.globalNavigator(`/subPackage/workbench/views/reportList?code=${this.stdId}`)
                } else {
                    this.$u.func.globalNavigator(`/subPackage/workbench/views/audit?code=${this.stdId}`)
                    this.$u.func.globalNavigator(`/subPackage/workbench/views/auditList?code=${this.stdId}`)
                }
            }
        },
subPackage/workbench/views/auditList.vue
New file
@@ -0,0 +1,289 @@
<template>
    <view>
        <u-sticky>
            <view class="bgc-ff">
                <view class="tab">
                    <!-- <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
                        :activeStyle="{color:'#017BFC'}">
                    </u-tabs> -->
                    <view class="search flex j-c-s-b a-i-c">
                        <view class="tab-filter flex j-c-c a-i-c" @click="showDateModal">
                            <text class="f-28">时间筛选</text>
                            <u-icon name="arrow-down"></u-icon>
                        </view>
                        <u-search placeholder="请输入需要查询信息的名称" v-model="keyWord" :clearabled="true" :showAction="true"
                            :animation="true" @search="searchConfirm" @clear="clearConfirm"></u-search>
                    </view>
                </view>
            </view>
        </u-sticky>
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k"
                @click="navTo(i.id,i.reportType,i.status)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">{{i.name}}</text>
                    <u-tag v-if="i.status == 4" text="待接收" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.status == 1" text="待审批" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.status == 2" text="审核通过" type="success" plain plainFill></u-tag>
                    <u-tag v-if="i.status == 3" text="审核拒绝" type="error" plain plainFill></u-tag>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">时间</text>
                    <text class="f-28 c-66">{{i.createTime}}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">地址</text>
                    <text class="address f-28 c-66">{{i.addressName || ""}}</text>
                </view>
            </view>
        </view>
        <u-toast ref="uToast"></u-toast>
        <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
        <date-range-modal ref="dateRane" @comfirm="handleComfirmDate" @rest="handleRestDate" />
    </view>
</template>
<script>
    import {
        getAuditReportingList
    } from "@/api/reporting/reporting"
    import dateRangeModal from '@/components/dateRangeModal/modal.vue';
    export default {
        components: {
            dateRangeModal
        },
        data() {
            return {
                tabList: [
                    {
                        name: "全部",
                        status: "",
                    },
                    {
                        name: "待接收",
                        status: 4,
                    },
                    {
                        name: "待审核",
                        status: 1
                    },
                    {
                        name: "审核通过",
                        status: 2
                    },
                    {
                        name: "已拒绝",
                        status: 3
                    }
                ],
                tabIndex: 0,
                currentStatus: 2,
                list: [],
                loadingStatus: 'nomore',
                currentPage: 1,
                frequency: '',
                reportType: "",
                selectDate: [],
                houseCode: "",
                keyword: ""
            }
        },
        onLoad(option) {
            console.log(option);
            if (option.reportType) {
                this.reportType = option.reportType;
                uni.setNavigationBarTitle({
                    title: "取保候审"
                })
            }
            if (option.from == "index") {
                uni.setNavigationBarTitle({
                    title: "场所任务"
                })
            }
            if (option.from == "task") {
                this.tabIndex = 1;
                this.currentStatus = 1;
            }
            if (option.code) {
                this.houseCode = option.code;
            }
            this.getList()
        },
        onReachBottom() {
            this.currentPage++
            this.getList()
        },
        methods: {
            searchConfirm() {
                this.resetParams()
                this.getList()
            },
            clearConfirm() {
                this.keyWord = ''
                this.searchConfirm()
            },
            changeTab(e) {
                this.tabIndex = e.index;
                this.currentStatus = e.status;
                this.resetParams();
                this.getList();
            },
            resetParams() {
                this.list = [];
                this.currentPage = 1;
            },
            getList() {
                this.$nextTick(() => {
                    this.loadingStatus = 'loadingmore'
                    this.$refs.uToast.show({
                        type: 'loading',
                        message: '正在加载',
                        duration: 9999999
                    })
                })
                let params = {
                    page: this.currentPage,
                    size: 20,
                    status: this.currentStatus,
                    frequency: this.frequency
                }
                if (this.selectDate.length) {
                    params.startTime = this.selectDate[0]
                    params.endTime = this.selectDate[1]
                }
                if (this.houseCode) {
                    params.houseCode = this.houseCode;
                }
                if (this.reportType) {
                    params.reportType = this.reportType
                }
                if (this.keyword) {
                    params.name = this.keyword;
                }
                getAuditReportingList(params).then(res => {
                    if (res.code != 200) {
                        uni.showToast({
                            title: '数据请求失败',
                            icon: 'error'
                        })
                        return
                    }
                    let records = res.data.records;
                    this.list = [...this.list, ...records]
                    this.$nextTick(() => {
                        this.$refs.uToast.isShow = false
                    })
                    this.loadingStatus = 'nomore'
                })
            },
            navTo(id, type, status) {
                if (status == 4) {
                    if (uni.getStorageSync("activeRole").roleName == "民警") {
                        this.navToDetail(type, id)
                    } else {
                        this.navToEdit(type, id);
                    }
                } else {
                    this.navToDetail(type, id)
                }
            },
            navToEdit(type, id) {
                if (type == 1) {
                    this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
                } else if (type == 2) {
                    this.$u.func.globalNavigator(`/subPackage/label/hotel?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                    this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
                } else if (type == 6) {
                    this.$u.func.globalNavigator(`/subPackage/label/school?id=${id}`)
                }
            },
            navToDetail(type, id) {
                if (type == 1) {
                    this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
                } else if (type == 2) {
                    this.$u.func.globalNavigator(`hotelReportDetail?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                    this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
                } else if (type == 6) {
                    this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
                }
            },
            showDateModal() {
                this.$refs.dateRane.open();
            },
            handleRestDate() {
                this.selectDate = [];
                this.resetParams();
                this.getList()
            },
            handleComfirmDate(val) {
                this.selectDate = val;
                this.resetParams();
                this.getList()
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #F5F5F5;
    }
    .tab {
        // width: 100%;
    }
    .search {
        padding: 20rpx 20rpx;
    }
    // .tab /deep/.u-tabs__wrapper__nav__item {
    //     flex: 1;
    // }
    .tab-filter {
        padding: 0 20rpx;
    }
    .list {
        margin: 20rpx 30rpx 0;
    }
    .list-item {
        padding: 0 30rpx 20rpx;
        border-radius: 8rpx;
        .item-title {
            padding: 30rpx 0;
            border-bottom: 1px solid #F5F5F5;
        }
        .item-row {
            padding: 10rpx 0;
            .address {
                width: 65%;
                text-align: right;
            }
        }
    }
</style>
subPackage/workbench/views/reportList.vue
New file
@@ -0,0 +1,267 @@
<template>
    <view>
        <u-sticky>
            <view class="hander">
                <view class="tab">
                    <!-- <u-tabs :list="tabList" :scrollable="false" :current="tabIndex" @click="changeTab"
                        :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}">
                    </u-tabs> -->
                    <view class="search flex j-c-s-b a-i-c">
                        <view class="tab-filter flex j-c-c a-i-c" @click="showDateModal">
                            <text class="f-28">时间筛选</text>
                            <u-icon name="arrow-down"></u-icon>
                        </view>
                        <u-search placeholder="请输入需要查询信息的姓名" v-model="keyWord" :clearabled="true" :showAction="true"
                            :animation="true" @search="searchConfirm" @clear="clearConfirm"></u-search>
                    </view>
                </view>
            </view>
        </u-sticky>
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="item in reportList" :key="item.id" @click="pushPage(item)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">{{ findObjValue(item.type, typeList, 'type').name }}</text>
                    <u-tag class="u_tag" size="mini" plain plainFill
                        :text="findObjValue(item.confirmFlag, tabList, 'status').name"
                        :type="findObjValue(item.confirmFlag, tabList, 'status').type"></u-tag>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">姓名</text>
                    <text class="f-28 c-66">{{ item.realName }}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">手机</text>
                    <text class="f-28 c-66">{{ item.phone }}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">事发地</text>
                    <text class="address f-28 c-66">{{ item.address || "" }}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b f-28">
                    <text>时间</text>
                    <text class="c-66">{{item.createTime}}</text>
                </view>
            </view>
        </view>
        <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
        <date-range-modal ref="dateRane" @comfirm="handleComfirmDate" @rest="handleRestDate" />
    </view>
</template>
<script>
    import {
        getPage
    } from '@/api/task/taskReportForRepairs.js'
    import dateRangeModal from '@/components/dateRangeModal/modal.vue';
    export default {
        components: {
            dateRangeModal
        },
        data() {
            return {
                reportList: [],
                pagingParams: {
                    current: 1,
                    size: 10
                },
                tabList: [
                    {
                        name: "全部",
                        status: "",
                    },
                    {
                        name: "待处理",
                        status: 1,
                        type: 'warning'
                    },
                    {
                        name: "处理中",
                        status: 2,
                        type: 'success'
                    },
                    {
                        name: "已处理",
                        status: 3,
                        type: 'success'
                    },
                ],
                typeList: [{
                        name: "公共维修",
                        type: 1
                    },
                    {
                        name: "居家维修",
                        type: 2
                    },
                    {
                        name: "矛盾纠纷",
                        type: 3
                    },
                    {
                        name: "投诉举报",
                        type: 4
                    },
                    {
                        name: "企业商户上报",
                        type: 5
                    }
                ],
                tabIndex: 0,
                tabStatus: 3,
                keyWord: '',
                loadingStatus: 'nomore',
                selectDate: [],
                houseCode: ""
            }
        },
        onLoad(option) {
            if (option.from) {
                this.tabIndex = 1;
                this.tabStatus = 1;
            }
            if (option.code) {
                this.houseCode = option.code;
            }
        },
        onShow() {
            this.currentRole = uni.getStorageSync("activeRole")
            this.reportList = []
            this.pagingParams.current = 1;
            this.getPageList()
        },
        onReachBottom() {
            this.pagingParams.current++
            this.getPageList()
        },
        methods: {
            async getPageList() {
                this.loadingStatus = 'loadingmore'
                const params = {
                    realName: this.keyWord,
                    confirmFlag: this.tabStatus
                }
                if (this.selectDate.length) {
                    params.startTime = this.selectDate[0]
                    params.endTime = this.selectDate[1]
                }
                if (this.houseCode) {
                    params.addressCode = this.houseCode;
                }
                const {
                    roleName
                } = this.currentRole
                const res = await getPage({
                    ...params,
                    roleName,
                    ...this.pagingParams
                })
                const {
                    code,
                    data: {
                        records
                    }
                } = res
                if (code !== 200) {
                    uni.showToast({
                        title: '数据请求失败',
                        icon: 'error'
                    })
                    return
                }
                this.reportList = [...this.reportList, ...records]
                this.loadingStatus = 'nomore'
            },
            changeTab(e) {
                this.tabStatus = e.status;
                this.resetParams()
                this.getPageList()
            },
            searchConfirm() {
                this.resetParams()
                this.getPageList()
            },
            clearConfirm() {
                this.keyWord = ''
                this.searchConfirm()
            },
            resetParams() {
                this.reportList = []
                this.pagingParams.current = 1
            },
            findObjValue(value, obj, word) {
                const res = obj.find(item => {
                    return item[word] == value
                })
                return res
            },
            pushPage(item) {
                const data = JSON.stringify(item)
                // this.$u.func.globalNavigator('/subPackage/workbench/views/reportAudit?id='+id)
                this.$u.func.globalNavigator('/subPackage/workbench/views/reportAudit?data=' + data)
            },
            showDateModal() {
                this.$refs.dateRane.open();
            },
            handleRestDate() {
                this.selectDate = [];
                this.resetParams();
                this.getPageList()
            },
            handleComfirmDate(val) {
                this.selectDate = val;
                this.resetParams();
                this.getPageList()
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #F5F5F5;
    }
    .hander {
        background-color: #fff;
        .tab {
            width: 100%;
        }
        .tab-filter {
            padding: 0 20rpx;
        }
        .search {
            padding: 20rpx 30rpx;
        }
    }
    .list {
        margin: 20rpx 30rpx 0;
    }
    .list-item {
        padding: 0 30rpx 20rpx;
        border-radius: 8rpx;
        .item-title {
            padding: 30rpx 0;
            border-bottom: 1px solid #F5F5F5;
        }
        .item-row {
            padding: 10rpx 0;
            .address {
                width: 75%;
                text-align: right;
            }
        }
    }
</style>