ll
liukangdong
2024-12-03 4ee1706130a3e5c2019f7231b318a7077d8ba4ee
ll
已修改10个文件
463 ■■■■ 文件已修改
admin/src/components/business/OperaInternalCompanyWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/router/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalCompany.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/project/housingList.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/common/memberSel.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/operation/record.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/polling/task.vue 439 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/workOrder/edit.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/workOrder/list.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaInternalCompanyWindow.vue
@@ -39,7 +39,7 @@
      // 表单数据
      form: {
        id: null,
        type: '2',
        type: '1',
        name: '',
        parentId: null,
        disable: false,
admin/src/router/index.js
@@ -10,8 +10,8 @@
const router = new VueRouter({
  // + (process.env.VUE_APP_ROUTER_MODE === 'hash' ? '#' : '')
  base: process.env.VUE_APP_CONTEXT_PATH,
  mode: process.env.VUE_APP_ROUTER_MODE,
  // base: process.env.VUE_APP_CONTEXT_PATH,
  mode: 'hash',
  routes: [
    // 登录
    {
admin/src/views/business/internalCompany.vue
@@ -73,7 +73,7 @@
      loading: false,
      sorting: false,
      searchForm: {
        type: 2
        type: 1
      },
      list: [],
      total: 0
admin/src/views/business/internalMember.vue
@@ -287,7 +287,7 @@
    },
    // 获取组织树
    getfindCompanyTreePage () {
      fetchList()
      fetchList(1)
        .then(res => {
          if (res && res.length > 0) {
            res[0].fsStatus = 1
admin/src/views/project/housingList.vue
@@ -40,9 +40,9 @@
        <el-table-column prop="feeArea" label="计费面积(m²)" min-width="80px"></el-table-column>
        <el-table-column prop="" label="租赁状态" min-width="80px">
          <template v-slot="{row}">
            <span v-if="row.leaseStatus == 0">待租赁</span>
            <span v-if="row.leaseStatus == 1">已租赁</span>
            <span v-if="row.leaseStatus == 2">未开启租赁</span>
            <span v-if="row.leaseStatus == 0">待租</span>
            <span v-else-if="row.leaseStatus == 1">已租</span>
            <span v-else>-</span>
          </template>
        </el-table-column>
        <el-table-column prop="isInvestment" label="招商状态" min-width="60px">
h5/pages/common/memberSel.vue
@@ -64,7 +64,7 @@
                    realname: param.name,
                    id: param.id
                }).then(res => {
                    this.memberList = res.data || []
                    this.memberList = [{id: '', realname: '全部'}, ...res.data]
                })
            }
        }
h5/pages/operation/record.vue
@@ -99,7 +99,7 @@
            },
            getpeo() {
                findInternalList().then(res => {
                    this.columns = [res.data]
                    this.columns = [...res.data]
                })
            },
            confirm(e) {
h5/pages/polling/task.vue
@@ -1,173 +1,196 @@
<template>
    <view class="main_app">
<!--         <view class="head_wrap">
        <!--         <view class="head_wrap">
            <view class="search_wrap">
                <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
                <input v-model="param.keyword" @confirm="getList()" type="text" placeholder="搜索楼宇/房间名称" placeholder-class="placeholder9" />
            </view>
        </view> -->
        <!--  -->
        <view class="tabs">
            <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')">
                <text>待处理</text>
                <text class="border"></text>
            </view>
            <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)">
                <text>已处理</text>
                <text class="border"></text>
            </view>
            <view class="tab" @click="allClick">
                <view class="name">
                    <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
                    <image v-else class="icon" src="@/static/check.png" mode=""></image>
                    <text>查看全部</text>
                </view>
                <text class="border"></text>
            </view>
        </view> -->
        <!--  -->
        <view class="tabs">
            <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')">
                <text>待处理</text>
                <text class="border"></text>
            </view>
            <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)">
                <text>已处理</text>
                <text class="border"></text>
            </view>
            <view class="tab" @click="allClick">
                <view class="name">
                    <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
                    <image v-else class="icon" src="@/static/check.png" mode=""></image>
                    <text>查看全部</text>
                </view>
                <text class="border"></text>
            </view>
        </view>
        <!--  -->
        <view class="list">
            <view class="item" v-for="item in list" @click="itemClick(item)">
                <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
                <image v-else src="@/static/side/xunjian.png" class="icon"></image>
                <view class="content">
                    <view class="name_wrap line">
                        <view class="name">{{item.planTitle}}</view>
                        <view class="status" :class="{
                            green: item.status == 1,
                            red: item.status == 2,
                            gray: item.status == 3 || item.status == 4
                        }">{{statusM[item.status]}}</view>
                    </view>
                    <view class="line" v-if="item.startDate">任务日期:{{ item.startDate.slice(0, 11) }}</view>
                    <view class="line">执行时间:{{ item.startDate.slice(11, 16) }} 至 {{ item.endDate.slice(11, 16) }}</view>
                    <view class="line">
                        <view>完成情况:{{item.finishNum || 0}}/{{item.patrolNum}}</view>
                        <view class="btn">
                            <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
                            <view>扫码巡检</view>
                        </view>
        <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
            <view class="list">
                <view class="item" v-for="item in list" @click="itemClick(item)">
                    <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
                    <image v-else src="@/static/side/xunjian.png" class="icon"></image>
                    <view class="content">
                        <view class="name_wrap line">
                            <view class="name">{{item.planTitle}}</view>
                            <view class="status" :class="{
                                green: item.status == 1,
                                red: item.status == 2,
                                gray: item.status == 3 || item.status == 4
                            }">{{statusM[item.status]}}</view>
                        </view>
                        <view class="line" v-if="item.startDate">任务日期:{{ item.startDate.slice(0, 11) }}</view>
                        <view class="line">执行时间:{{ item.startDate.slice(11, 16) }} 至 {{ item.endDate.slice(11, 16) }}</view>
                        <view class="line">
                            <view>完成情况:{{item.finishNum || 0}}/{{item.patrolNum}}</view>
                            <view class="btn">
                                <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
                                <view>扫码巡检</view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </view>
        </scroll-view>
        <!--  -->
    </view>
</template>
<script>
    import { ywPatrolTaskPost } from '@/api'
<script>
    import {
        ywPatrolTaskPost
    } from '@/api'
    export default {
        data() {
            return {
                param: {
                    queryStatus: '0,1'
                },
                list: [],
                activeTab: 0,
                selectAll: false,
                page: 1,
                statusM: {
                    0: '待开始',
                    1: '进行中',
                    2: '已超期',
                    3: '已完成',
                    4: '已取消',
                param: {
                    queryStatus: '0,1'
                },
                list: [],
                activeTab: 0,
                selectAll: false,
                page: 1,
                statusM: {
                    0: '待开始',
                    1: '进行中',
                    2: '已超期',
                    3: '已完成',
                    4: '已取消',
                }
            };
        },
        onLoad() {
            this.getList()
        },
        onReachBottom() {
            const {total,list} = this
            if (list.length < total) {
                this.page = this.page + 1
                this.getList()
            } else {
                this.showToast('暂无更多数据')
            }
        },
        methods: {
            tabsClick(val) {
                this.param.status = val
                this.page = 1
                this.list = []
                this.getList()
            },
            allClick() {
                this.selectAll = !this.selectAll
                this.list = []
                this.page = 1
                this.getList()
            },
            itemClick(item) {
                uni.navigateTo({
                    url: '/pages/polling/detail?id=' + item.id
                })
            },
            getList() {
                const { page, param, selectAll } = this
                ywPatrolTaskPost({
                    model: {...param, dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id, },
                    page,
                    capacity: 10
                }).then(res => {
                    this.list = [...this.list, ...res.data.records]
                    this.total = res.data.total
                })
        onLoad() {
            this.getList()
        },
        methods: {
            scrolltolower() {
                const {
                    total,
                    list
                } = this
                if (list.length < total) {
                    this.page = this.page + 1
                    this.getList()
                } else {
                    this.showToast('暂无更多数据')
                }
            },
            tabsClick(val) {
                this.param.queryStatus = val
                this.page = 1
                this.list = []
                this.getList()
            },
            allClick() {
                this.selectAll = !this.selectAll
                this.list = []
                this.page = 1
                this.getList()
            },
            itemClick(item) {
                uni.navigateTo({
                    url: '/pages/polling/detail?id=' + item.id
                })
            },
            getList() {
                const {
                    page,
                    param,
                    selectAll
                } = this
                ywPatrolTaskPost({
                    model: {
                        ...param,
                        dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
                    },
                    page,
                    capacity: 10
                }).then(res => {
                    this.list = [...this.list, ...res.data.records]
                    this.total = res.data.total
                })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .main_app{
        padding: 0 30rpx;
    }
    .tabs{
        display: flex;
        width: 750rpx;
        margin: 12rpx -30rpx 0;
        border-bottom: 1rpx solid #E5E5E5;
        .tab{
            font-size: 30rpx;
            color: #666666;
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            height: 88rpx;
            .name{
                display: flex;
                align-items: center;
            }
            .icon{
                width: 28rpx;
                height: 28rpx;
                margin-right: 10rpx;
            }
            .border{
                width: 54rpx;
                height: 6rpx;
                background-color: #fff;
                border-radius: 3rpx;
                margin-top: 24rpx;
            }
        }
        .active{
            font-weight: 600;
            font-size: 32rpx;
            color: #222222;
            .border{
                background-color: $primaryColor;
            }
        }
<style lang="scss" scoped>
    .main_app {
        padding: 0 30rpx;
    }
    .tabs {
        display: flex;
        width: 750rpx;
        margin: 12rpx -30rpx 0;
        border-bottom: 1rpx solid #E5E5E5;
        .tab {
            font-size: 30rpx;
            color: #666666;
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            height: 88rpx;
            .name {
                display: flex;
                align-items: center;
            }
            .icon {
                width: 28rpx;
                height: 28rpx;
                margin-right: 10rpx;
            }
            .border {
                width: 54rpx;
                height: 6rpx;
                background-color: #fff;
                border-radius: 3rpx;
                margin-top: 24rpx;
            }
        }
        .active {
            font-weight: 600;
            font-size: 32rpx;
            color: #222222;
            .border {
                background-color: $primaryColor;
            }
        }
    }
    .head_wrap {
        display: flex;
        align-items: center;
@@ -180,9 +203,11 @@
            background: #F7F7F7;
            border-radius: 38rpx;
            padding-left: 30rpx;
            input{
                flex: 1;
            input {
                flex: 1;
            }
            .search {
                width: 28rpx;
                height: 28rpx;
@@ -191,70 +216,86 @@
    }
    .scroll_Y {
        height: calc(100vh - 230rpx);
    }
    .list {
        .item {
            display: flex;
            // height: 290rpx;
            padding: 30rpx 0;
            // height: 290rpx;
            padding: 30rpx 0;
            border-bottom: 2rpx solid #E5E5E5;
            &:nth-last-child(1){
                border: none;
            }
            .icon {
                width: 80rpx;
                height: 80rpx;
                height: 80rpx;
                margin-right: 24rpx;
            }
            .content {
                flex: 1;
                color: #666666;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                .line{
                    margin-bottom: 20rpx;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    .btn{
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        width: 180rpx;
                        height: 60rpx;
                        background: $primaryColor;
                        color: #fff;
                        font-size: 26rpx;
                        box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0,104,255,0.3);
                        border-radius: 30rpx;
                        .saoma{
                            width: 28rpx;
                            height: 28rpx;
                            margin-right: 8rpx;
                        }
                    }
                    &:nth-last-child(1){
                        margin-bottom: 0;
                    }
                }
                .name_wrap{
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    .name{
                        display: flex;
                        align-items: flex-end;
                        font-weight: 600;
                        font-size: 34rpx;
                        color: #222222;
                    }
                    .status{
                        color: $primaryColor;
                    }
                    .green{
                        color: #0ADE79;
                    }
                    .gray{
                        color: #999999;
                    }
                flex: 1;
                color: #666666;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                .line {
                    margin-bottom: 20rpx;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    .btn {
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        width: 180rpx;
                        height: 60rpx;
                        background: $primaryColor;
                        color: #fff;
                        font-size: 26rpx;
                        box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 104, 255, 0.3);
                        border-radius: 30rpx;
                        .saoma {
                            width: 28rpx;
                            height: 28rpx;
                            margin-right: 8rpx;
                        }
                    }
                    &:nth-last-child(1) {
                        margin-bottom: 0;
                    }
                }
                .name_wrap {
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    .name {
                        display: flex;
                        align-items: flex-end;
                        font-weight: 600;
                        font-size: 34rpx;
                        color: #222222;
                    }
                    .status {
                        color: $primaryColor;
                    }
                    .green {
                        color: #0ADE79;
                    }
                    .gray {
                        color: #999999;
                    }
                }
            }
        }
h5/pages/workOrder/edit.vue
@@ -26,7 +26,7 @@
                    <u-icon name="arrow-right" color="#999999" size="15"></u-icon>
                </view>
            </view>
            <view class="item">
            <view class="item" v-if="param.areaType == 0">
                <view class="la">上门时间</view>
                <view class="line sel_wrap" @click="showTime = true">
                    <view class="left" :class="param.getDate ? '' : 'placeholder9'">{{ param.getDate ? param.getDate : '请选择' }}
h5/pages/workOrder/list.vue
@@ -44,7 +44,7 @@
                        <view class="line">位置类型:{{item.areaType == '0' ? '室内装修' : '公共区域'}}</view>
                        <view class="line">工单分类:{{item.categoryName}}</view>
                        <view class="line">上报时间:{{item.createDate}}</view>
                        <view class="line">上门时间:{{item.getDate}}</view>
                        <view class="line" v-if="item.getDate">上门时间:{{item.getDate}}</view>
                    </view>
                </view>
                <view v-if="list.length == 0" class="empty_wrap">