Blame view

pages-sub/daily/maintain-manage/road-detail-list.vue 7.2 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
          >
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
54
55
56
57
            <!-- 自定义标题区域 -->
            <template #head>
              <view class="card-header">
                <view class="common-card-title  u-line-1">{{ item.planName || '无计划名称' }}</view>
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
58
59
60
                <!-- 已失效标识 -->
                <up-text type="error" v-if="item.finishState === '3'"  text="错误" class="invalid-tag"></up-text>
  <!--              <view v-if="item.finishState === '3'" class="invalid-tag">已失效</view>-->
834a3df1   刘淇   养护计划列表
61
              </view>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
            </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"
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
85
86
87
  
                        :disabled="item.finishState === '3'"
                        :class="{ 'disabled-btn': item.finishState === '3' }"
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
88
                    >
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
89
90
  
                      {{ item.finishState === '3' ? '补交记录' : '提交记录' }}
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
                    </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   刘淇   养护计划列表
106
              </view>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
107
108
            </template>
          </up-card>
834a3df1   刘淇   养护计划列表
109
110
111
112
113
114
        </view>
      </z-paging>
    </view>
  </template>
  
  <script setup>
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
115
  import { ref } from 'vue'
834a3df1   刘淇   养护计划列表
116
117
118
  import { onLoad, onShow } from '@dcloudio/uni-app'
  import { timeFormat } from '@/uni_modules/uview-plus'
  import { getRoadDetails } from "@/api/maintain-manage/maintain-manage";
834a3df1   刘淇   养护计划列表
119
  // ========== 基础数据定义 ==========
834a3df1   刘淇   养护计划列表
120
  const statusTabs = ref([
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
121
122
123
    {name: '待完成', id: '1'},
    {name: '已失效', id: '3'},
    {name: '已完成', id: '2'}
834a3df1   刘淇   养护计划列表
124
  ])
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
125
126
127
128
  const activeStatus = ref('1')
  const searchValue = ref('')
  const planList = ref([])
  const pagingRef = ref(null)
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
129
130
  const roadId = ref('')
  const finishState = ref('')
834a3df1   刘淇   养护计划列表
131
  // 搜索占位符
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
132
  const searchPlaceholder = ref('请输入计划名称')
834a3df1   刘淇   养护计划列表
133
  // ========== 方法定义 ==========
834a3df1   刘淇   养护计划列表
134
  const getUrlParams = (options) => {
834a3df1   刘淇   养护计划列表
135
136
    if (options?.roadId) {
      roadId.value = options.roadId
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
137
      console.log('从URL获取的roadId:', roadId.value)
834a3df1   刘淇   养护计划列表
138
    }
834a3df1   刘淇   养护计划列表
139
140
    if (options?.finish_state) {
      finishState.value = options.finish_state
834a3df1   刘淇   养护计划列表
141
142
143
144
      activeStatus.value = options.finish_state
      console.log('从URL获取的finish_state:', finishState.value)
    }
  }
834a3df1   刘淇   养护计划列表
145
146
147
  const handleStatusChange = (item) => {
    console.log('切换状态:', item)
    activeStatus.value = item.id
834a3df1   刘淇   养护计划列表
148
    finishState.value = item.id
834a3df1   刘淇   养护计划列表
149
150
    pagingRef.value?.reload()
  }
834a3df1   刘淇   养护计划列表
151
152
  const handleSearch = () => {
    console.log('搜索关键词:', searchValue.value)
834a3df1   刘淇   养护计划列表
153
154
    pagingRef.value?.reload()
  }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
155
  const submitRecord = (item) => {
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
156
157
158
159
    // 已失效状态下直接返回,不执行跳转
    if (item.finishState === '3') {
      return
    }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
160
161
162
163
164
165
166
167
168
    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   刘淇   养护计划列表
169
    }
834a3df1   刘淇   养护计划列表
170
  }
834a3df1   刘淇   养护计划列表
171
172
  const queryList = async (pageNo, pageSize) => {
    try {
834a3df1   刘淇   养护计划列表
173
174
175
      const paramsData = {
        pageNo: pageNo,
        pageSize: pageSize,
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
176
177
        roadId: roadId.value,
        finishState: finishState.value || activeStatus.value,
834a3df1   刘淇   养护计划列表
178
179
        planName: searchValue.value.trim()
      }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
180
      console.log('请求参数:', paramsData)
834a3df1   刘淇   养护计划列表
181
182
      const res = await getRoadDetails(paramsData)
      console.log(res)
834a3df1   刘淇   养护计划列表
183
      const listData = res?.list || res || []
834a3df1   刘淇   养护计划列表
184
      pagingRef.value?.complete(listData)
834a3df1   刘淇   养护计划列表
185
186
    } catch (error) {
      console.error('请求失败:', error)
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
187
      uni.showToast({title: '加载失败,请重试', icon: 'none'})
834a3df1   刘淇   养护计划列表
188
      pagingRef.value?.complete(false)
834a3df1   刘淇   养护计划列表
189
190
    }
  }
fb13622a   刘淇   养护计划列表 样式 差去一个卡片的头部
191
  // ========== 生命周期 ==========
834a3df1   刘淇   养护计划列表
192
  onLoad((options) => {
834a3df1   刘淇   养护计划列表
193
    getUrlParams(options)
834a3df1   刘淇   养护计划列表
194
  })
834a3df1   刘淇   养护计划列表
195
  onShow(() => {
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
196
197
198
199
    // if (roadId.value) {
    //   pagingRef.value?.reload()
    // }
    pagingRef.value?.reload()
834a3df1   刘淇   养护计划列表
200
201
  })
  
834a3df1   刘淇   养护计划列表
202
203
204
205
  </script>
  
  <style scoped lang="scss">
  .page-container {
834a3df1   刘淇   养护计划列表
206
  }
834a3df1   刘淇   养护计划列表
207
208
209
210
211
212
  // 顶部吸顶区域样式
  .sticky-header {
    background-color: #ffffff;
    padding-bottom: 10rpx;
    border-bottom: 1px solid #eee;
  
834a3df1   刘淇   养护计划列表
213
214
215
216
217
    .search-input {
      margin: 20rpx 20rpx 10rpx !important;
    }
  }
  
b0e2f1a9   刘淇   快速工单和巡查计划样式优化
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
  // 卡片头部样式
  .card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  
  // 禁用按钮样式
  .disabled-btn {
    background-color: #c0c4cc !important;
    border-color: #c0c4cc !important;
    color: #fff !important;
    pointer-events: none; // 防止点击
    opacity: 0.7;
  }
834a3df1   刘淇   养护计划列表
233
  
834a3df1   刘淇   养护计划列表
234
  
834a3df1   刘淇   养护计划列表
235
  </style>