Blame view

pages-sub/daily/maintain-manage/road-detail-list.vue 6.43 KB
834a3df1   刘淇   养护计划列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  <template>
    <view class="page-container">
      <!-- 顶部吸顶区域 -->
      <up-sticky>
        <view class="sticky-header">
          <!-- 状态Tabs -->
          <up-tabs
              v-model="activeStatus"
              :list="statusTabs"
              line-width="40rpx"
              active-color="#1989fa"
              inactive-color="#666"
              :scrollable="true"
              class="status-tabs"
              @click="handleStatusChange"
          ></up-tabs>
  
          <!-- 搜索框 -->
          <up-search
              v-model="searchValue"
              :placeholder="searchPlaceholder"
              bg-color="#f5f5f5"
              shape="round"
              :show-action="true"
              actionText="搜索"
              :animation="true"
              @search="handleSearch"
              @custom="handleSearch"
              :clearabled="false"
              maxlength="50"
              class="search-input"
          ></up-search>
        </view>
      </up-sticky>
  
      <!-- 分页列表区域 -->
      <z-paging
          ref="pagingRef"
          v-model="planList"
          @query="queryList"
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
41
          :auto-show-system-loading="true"
834a3df1   刘淇   养护计划列表
42
43
44
      >
        <!-- 空数据插槽 -->
        <template #empty>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
45
          <empty-view/>
834a3df1   刘淇   养护计划列表
46
        </template>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
47
48
49
50
51
52
        <view class="common-card-list" style=" padding-top: 170rpx;">
          <up-card
              :border="false"
              :foot-border-top="false"
              v-for="(item,index) in planList"
              :key="`${item.planNo}_${index}`"
834a3df1   刘淇   养护计划列表
53
  
834a3df1   刘淇   养护计划列表
54
          >
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
55
56
57
58
            <!-- 自定义标题区域 -->
            <template #head>
              <view class="card-header">
                <view class="common-card-title  u-line-1">{{ item.planName || '无计划名称' }}</view>
834a3df1   刘淇   养护计划列表
59
              </view>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
            </template>
  
            <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.planNo || '-' }}</view>
                </view>
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">养护周期:</view>
                  <view class="u-line-1 u-body-value">{{ item.rate || '-' }}
                    {{ uni.$dict.getDictLabel('cycle_id_type', item.cycleId) }}
                  </view>
                </view>
  
                <view class="u-body-item u-flex common-item-center common-justify-between">
                  <view class="u-body-item-title">计划完成次数: {{ item.planNum || 0 }}</view>
                  <view class="u-line-1">
                    <up-button
                        type="primary"
                        size="mini"
                        @click="submitRecord(item)"
                        class="submit-record-btn"
                    >
                      提交记录
                    </up-button>
                  </view>
                </view>
  
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">已完成比例:</view>
                  <view class="u-line-1 u-body-value">{{ item.finishPercent || 0 }}%</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   刘淇   养护计划列表
100
              </view>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
101
102
            </template>
          </up-card>
834a3df1   刘淇   养护计划列表
103
104
105
106
107
108
        </view>
      </z-paging>
    </view>
  </template>
  
  <script setup>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
109
  import { ref } from 'vue'
834a3df1   刘淇   养护计划列表
110
111
112
  import { onLoad, onShow } from '@dcloudio/uni-app'
  import { timeFormat } from '@/uni_modules/uview-plus'
  import { getRoadDetails } from "@/api/maintain-manage/maintain-manage";
834a3df1   刘淇   养护计划列表
113
  // ========== 基础数据定义 ==========
834a3df1   刘淇   养护计划列表
114
  const statusTabs = ref([
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
115
116
117
    {name: '待完成', id: '1'},
    {name: '已失效', id: '3'},
    {name: '已完成', id: '2'}
834a3df1   刘淇   养护计划列表
118
  ])
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
119
120
121
122
123
124
125
  const activeStatus = ref('1')
  const searchValue = ref('')
  const planList = ref([])
  const pagingRef = ref(null)
  const loading = ref(false)
  const roadId = ref('')
  const finishState = ref('')
834a3df1   刘淇   养护计划列表
126
  // 搜索占位符
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
127
  const searchPlaceholder = ref('请输入计划名称')
834a3df1   刘淇   养护计划列表
128
  // ========== 方法定义 ==========
834a3df1   刘淇   养护计划列表
129
  const getUrlParams = (options) => {
834a3df1   刘淇   养护计划列表
130
131
    if (options?.roadId) {
      roadId.value = options.roadId
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
132
      console.log('从URL获取的roadId:', roadId.value)
834a3df1   刘淇   养护计划列表
133
    }
834a3df1   刘淇   养护计划列表
134
135
    if (options?.finish_state) {
      finishState.value = options.finish_state
834a3df1   刘淇   养护计划列表
136
137
138
139
      activeStatus.value = options.finish_state
      console.log('从URL获取的finish_state:', finishState.value)
    }
  }
834a3df1   刘淇   养护计划列表
140
141
142
  const handleStatusChange = (item) => {
    console.log('切换状态:', item)
    activeStatus.value = item.id
834a3df1   刘淇   养护计划列表
143
    finishState.value = item.id
834a3df1   刘淇   养护计划列表
144
145
    pagingRef.value?.reload()
  }
834a3df1   刘淇   养护计划列表
146
147
  const handleSearch = () => {
    console.log('搜索关键词:', searchValue.value)
834a3df1   刘淇   养护计划列表
148
149
    pagingRef.value?.reload()
  }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
150
151
152
153
154
155
156
157
158
159
  const submitRecord = (item) => {
    console.log('提交记录:', item.finishPercent)
    if (item.finishPercent == 0) {
      uni.navigateTo({
        url: `/pages-sub/daily/maintain-manage/add-record?finishState=${item.finishState}&planNo=${item.planNo}&finishPercent=${item.finishPercent}`
      })
    } else {
      uni.navigateTo({
        url: `/pages-sub/daily/maintain-manage/pending-plan-detail?finishState=${item.finishState}&planNo=${item.planNo}&finishPercent=${item.finishPercent}&planTypeId=${item.planTypeId}`
      })
834a3df1   刘淇   养护计划列表
160
    }
834a3df1   刘淇   养护计划列表
161
  }
834a3df1   刘淇   养护计划列表
162
163
164
  const queryList = async (pageNo, pageSize) => {
    try {
      loading.value = true
834a3df1   刘淇   养护计划列表
165
166
167
      const paramsData = {
        pageNo: pageNo,
        pageSize: pageSize,
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
168
169
        roadId: roadId.value,
        finishState: finishState.value || activeStatus.value,
834a3df1   刘淇   养护计划列表
170
171
        planName: searchValue.value.trim()
      }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
172
      console.log('请求参数:', paramsData)
834a3df1   刘淇   养护计划列表
173
174
      const res = await getRoadDetails(paramsData)
      console.log(res)
834a3df1   刘淇   养护计划列表
175
      const listData = res?.list || res || []
834a3df1   刘淇   养护计划列表
176
177
178
179
      pagingRef.value?.complete(listData)
      loading.value = false
    } catch (error) {
      console.error('请求失败:', error)
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
180
      uni.showToast({title: '加载失败,请重试', icon: 'none'})
834a3df1   刘淇   养护计划列表
181
182
183
184
      pagingRef.value?.complete(false)
      loading.value = false
    }
  }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
185
  // ========== 生命周期 ==========
834a3df1   刘淇   养护计划列表
186
  onLoad((options) => {
834a3df1   刘淇   养护计划列表
187
    getUrlParams(options)
834a3df1   刘淇   养护计划列表
188
  })
834a3df1   刘淇   养护计划列表
189
  onShow(() => {
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
190
191
192
    if (roadId.value) {
      pagingRef.value?.reload()
    }
834a3df1   刘淇   养护计划列表
193
194
  })
  
834a3df1   刘淇   养护计划列表
195
196
197
198
  </script>
  
  <style scoped lang="scss">
  .page-container {
834a3df1   刘淇   养护计划列表
199
200
201
202
203
204
205
206
  }
  
  // 顶部吸顶区域样式
  .sticky-header {
    background-color: #ffffff;
    padding-bottom: 10rpx;
    border-bottom: 1px solid #eee;
  
834a3df1   刘淇   养护计划列表
207
208
209
210
211
    .search-input {
      margin: 20rpx 20rpx 10rpx !important;
    }
  }
  
834a3df1   刘淇   养护计划列表
212
  
834a3df1   刘淇   养护计划列表
213
  
834a3df1   刘淇   养护计划列表
214
  </style>