Blame view

pages-sub/daily/patrol-manage/index.vue 5.61 KB
834a3df1   刘淇   养护计划列表
1
2
3
  <template>
    <view class="page-container">
      <!-- 顶部固定区域:Tabs + 搜索框 -->
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
4
5
      <up-sticky>
        <view class="sticky-header">
834a3df1   刘淇   养护计划列表
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        <u-tabs
            :list="tabList"
            :is-scroll="false"
            :activeStyle="{
            color: '#3c9cff',
            fontWeight: 'bold',
            transform: 'scale(1.05)'
          }"
            :inactiveStyle="{
            color: '#606266',
            transform: 'scale(1)'
          }"
            font-size="28rpx"
            @change="handleTabChange"
        ></u-tabs>
9b30ab8c   刘淇   新增快速工单,原版
21
  
834a3df1   刘淇   养护计划列表
22
23
24
25
26
27
28
29
30
31
32
33
34
        <up-search
            v-model="searchValue"
            placeholder="请输入道路名称"
            bg-color="#f5f5f5"
            shape="round"
            :show-action="true" actionText="搜索" :animation="true"
            @search="handleSearch"
            @custom="handleSearch"
            :clearabled="false"
            maxlength="50"
            style="margin: 20rpx 20rpx 0"
        ></up-search>
      </view>
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
35
      </up-sticky>
c293da23   刘淇   新园林init
36
  
834a3df1   刘淇   养护计划列表
37
      <z-paging
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
38
          ref="pagingRef"
834a3df1   刘淇   养护计划列表
39
40
          v-model="planList"
          @query="queryList"
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
41
          :auto-show-system-loading="true"
834a3df1   刘淇   养护计划列表
42
43
44
45
46
      >
        <template #empty>
          <empty-view/>
        </template>
        <!-- 计划卡片列表 -->
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
        <view  class="common-card-list" style="padding-top: 94px;">
  
          <up-card
              :border="false"
              :foot-border-top="false"
              :head-border-bottom="false"
              v-for="(item,index) in planList"
              :key="`${item.batchNo}_${index}`"
              :show-head="false"
          >
            <template #body>
              <view class="card-body">
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">道路名称:</view>
                  <view class="u-line-1 u-body-value">{{ item.roadName || '-' }}</view>
                </view>
834a3df1   刘淇   养护计划列表
63
  
ff65dc6c   刘淇   快速工单 样式优化
64
65
  
  
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
66
67
68
69
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">所属街道:</view>
                  <view class="u-line-1 u-body-value">{{ item.streetName }}
                  </view>
834a3df1   刘淇   养护计划列表
70
                </view>
834a3df1   刘淇   养护计划列表
71
  
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
72
73
74
75
76
77
78
79
80
81
82
83
84
                <view class="u-body-item u-flex common-item-center common-justify-between">
                  <view class="u-body-item-title">养护级别: {{uni.$dict.getDictLabel('conserve_level', item.levelId) || '-'}}</view>
                  <view class="u-line-1">
                    <up-button
                        type="primary"
                        size="mini"
                        @click="gotoDetail(item)"
                        class="submit-record-btn"
                    >
                      计划明细
                    </up-button>
                  </view>
                </view>
834a3df1   刘淇   养护计划列表
85
  
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
86
87
88
89
90
91
92
93
94
95
96
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">计划类型:</view>
                  <view class="u-line-1 u-body-value">{{uni.$dict.getDictLabel('inspection_maintain_type', item.planTypeId)}}</view>
                </view>
  
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">计划时间:</view>
                  <view class="u-line-1 u-body-value">{{ timeFormat(item.beginTime, 'yyyy-mm-dd') || '-' }} 至
                    {{ timeFormat(item.endTime, 'yyyy-mm-dd') || '-' }}
                  </view>
                </view>
834a3df1   刘淇   养护计划列表
97
              </view>
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
98
99
            </template>
          </up-card>
834a3df1   刘淇   养护计划列表
100
101
102
103
        </view>
  
      </z-paging>
    </view>
5cb33b90   刘淇   完成巡查计划 详情
104
  </template>
c293da23   刘淇   新园林init
105
  
834a3df1   刘淇   养护计划列表
106
107
108
109
110
111
112
113
114
115
116
  <script setup>
  import { timeFormat } from '@/uni_modules/uview-plus';
  import { ref } from 'vue';
  import { onLoad, onShow } from '@dcloudio/uni-app';
  import { inspectionPlanPage } from "@/api/patrol-manage/patrol-plan";
  // Tabs 配置
  const tabList = ref([
    {name: '待完成', id: '1'},
    {name: '已失效', id: '3'},
    {name: '已完成', id: '2'}
  ]);
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
117
  const pagingRef = ref(null)
834a3df1   刘淇   养护计划列表
118
119
120
121
  const activeTab = ref('1');
  // 搜索相关
  const searchValue = ref('');
  // 分页相关
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
122
123
  // const pageNo = ref(1);
  // const pageSize = ref(10);
834a3df1   刘淇   养护计划列表
124
125
  
  const planList = ref([]);
834a3df1   刘淇   养护计划列表
126
127
128
129
130
131
132
133
  
  
  // Tab切换
  const handleTabChange = (val) => {
    console.log(val)
    console.log(activeTab.value)
    activeTab.value = val.id
    searchValue.value = ''
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
134
    pagingRef.value.reload()
834a3df1   刘淇   养护计划列表
135
136
137
138
139
  };
  // 搜索/清空搜索
  const handleSearch = () => {
    // searchValue.value = '';
    console.log(searchValue.value)
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
140
    pagingRef.value.reload()
834a3df1   刘淇   养护计划列表
141
142
143
  };
  const handleSearchClear = () => {
    // searchValue.value = ''
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
144
    pagingRef.value.reload()
834a3df1   刘淇   养护计划列表
145
146
147
148
149
150
151
152
153
154
155
156
157
  };
  // 加载数据
  const queryList = async (pageNo, pageSize) => {
    try {
      const params = {
        roadName: searchValue.value.trim() || '',
        pageNo: pageNo,
        pageSize: pageSize,
        finishState: activeTab.value
      };
      console.log('请求参数:', params);
      const res = await inspectionPlanPage(params);
      console.log('接口返回:', res);
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
158
      pagingRef.value.complete(res.list);
834a3df1   刘淇   养护计划列表
159
160
161
    } catch (error) {
      console.error('加载失败:', error);
      // 修复点4:加载失败调用complete(false)
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
162
      pagingRef.value?.complete(false);
834a3df1   刘淇   养护计划列表
163
164
165
166
167
168
      uni.showToast({title: '加载失败,请重试', icon: 'none'});
    }
  };
  // 跳转明细
  const gotoDetail = (item) => {
    uni.navigateTo({
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
169
      url: `/pages-sub/daily/patrol-manage/pending-plan-detail?batchNo=${item.batchNo}&status=${activeTab.value}`
834a3df1   刘淇   养护计划列表
170
171
172
173
    });
  };
  // 修复点5:优化页面生命周期逻辑
  onLoad(() => {
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
174
175
    // auto=true时,z-pagingRef会自动触发query,此处可省略手动调用;若需强制初始化,可加:
    // pagingRef.value?.triggerQuery();
834a3df1   刘淇   养护计划列表
176
177
178
  });
  // 仅在页面从明细页返回时,若有数据则刷新当前tab数据(避免干扰上拉加载)
  onShow(() => {
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
179
    pagingRef.value?.reload()
834a3df1   刘淇   养护计划列表
180
181
182
183
  });
  </script>
  
  <style scoped lang="scss">
834a3df1   刘淇   养护计划列表
184
  .page-container {
834a3df1   刘淇   养护计划列表
185
  
834a3df1   刘淇   养护计划列表
186
  }
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
187
188
189
  .sticky-header {
    background-color: #ffffff;
    padding-bottom: 10rpx;
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
190
191
192
    .search-input {
      margin: 20rpx 20rpx 10rpx !important;
    }
834a3df1   刘淇   养护计划列表
193
  }
c293da23   刘淇   新园林init
194
  </style>