Blame view

pages-sub/problem/regional-order-manage/index.vue 20.7 KB
3d474e84   刘淇   快速工单 加上业务线
1
2
3
4
5
  <template>
    <view class="page-container">
      <!-- 顶部固定区域 -->
      <up-sticky>
        <view class="header-wrap">
3d474e84   刘淇   快速工单 加上业务线
6
7
8
9
10
11
12
13
          <up-tabs
              v-model="activeTab"
              :list="tabList"
              active-color="#1989fa"
              inactive-color="#666"
              font-size="30rpx"
              @click="handleTabChange"
          />
3d474e84   刘淇   快速工单 加上业务线
14
15
          <!-- 第二行:下拉框 + 搜索框 -->
          <view class="search-header">
3d474e84   刘淇   快速工单 加上业务线
16
17
18
19
20
21
22
23
24
25
            <view class="select-wrap common-text-color">
              <up-select
                  v-model:current="selectedSortValue"
                  :options="sortOptions"
                  :showOptionsLabel="true"
                  @select="handleSortChange"
                  border="surround"
                  :style="{ flex: 1 }"
              />
            </view>
3d474e84   刘淇   快速工单 加上业务线
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
            <view class="search-input-wrap">
              <up-search
                  v-model="searchValue"
                  placeholder="请输入关键字"
                  @search="handleSearch"
                  bg-color="#f5f5f5"
                  :clearabled="false"
                  :show-action="true"
                  actionText="搜索"
                  :animation="true"
                  @custom="handleSearch"
              />
            </view>
          </view>
        </view>
      </up-sticky>
  
      <!-- 列表容器 -->
      <z-paging
8ddc6f6e   刘淇   登录 修改样式
45
          ref="pagingRef"
3d474e84   刘淇   快速工单 加上业务线
46
47
48
          v-model="orderList"
          @query="queryList"
          :auto-show-system-loading="true"
3d474e84   刘淇   快速工单 加上业务线
49
50
      >
        <template #empty>
8ddc6f6e   刘淇   登录 修改样式
51
          <empty-view />
3d474e84   刘淇   快速工单 加上业务线
52
53
        </template>
  
12e66ec8   刘淇   新增树
54
        <view class="common-card-list">
3d474e84   刘淇   快速工单 加上业务线
55
          <up-card
3d474e84   刘淇   快速工单 加上业务线
56
57
58
              :border="false"
              :foot-border-top="false"
              v-for="(item, index) in orderList"
12e66ec8   刘淇   新增树
59
              :key="item.id || index"
3d474e84   刘淇   快速工单 加上业务线
60
61
62
63
64
              :show-head="false"
              class="order-card"
          >
            <template #body>
              <view class="card-body">
5b5a4862   刘淇   按钮放大
65
66
67
68
69
70
71
72
  <!--              <view v-if="activeTab !== 0" class="ml-10">-->
  <!--                <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
  <!--              </view>-->
  
                <view class="common-custom-btn " v-if="activeTab !== 0"  style="--btn-top: 130px;"  @click="handleDetail(item)">
                  工单详情
                </view>
  
3d474e84   刘淇   快速工单 加上业务线
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">工单编号:</view>
                  <view class="u-line-1 u-body-value">{{ item.orderNo || '-' }}</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.lonLatAddress || '-' }}</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.orderName || '未填写' }}</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.remark || '无' }}</view>
                </view>
5b5a4862   刘淇   按钮放大
89
  
12e66ec8   刘淇   新增树
90
91
92
93
94
95
                <view class="u-body-item u-flex common-justify-between common-item-center">
                  <view class="u-body-item-title">紧急程度:{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) || '-' }}</view>
  <!--                <view class="u-line-1 u-body-value flex-1 text-right">-->
  <!--                  {{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) || '-' }}-->
  <!--                </view>-->
                  <!-- 只有 我发起的(1)、已办(2) 显示该行的详情按钮 -->
5b5a4862   刘淇   按钮放大
96
97
98
  <!--                <view v-if="activeTab !== 0" class="ml-10">-->
  <!--                  <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
  <!--                </view>-->
3d474e84   刘淇   快速工单 加上业务线
99
100
101
                </view>
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">工单状态:</view>
12e66ec8   刘淇   新增树
102
                  <view class="u-line-1 u-body-value">{{ buzStatusMap[item.buzStatus] || '-' }}</view>
3d474e84   刘淇   快速工单 加上业务线
103
104
105
                </view>
                <view class="u-body-item u-flex">
                  <view class="u-body-item-title">提交时间:</view>
12e66ec8   刘淇   新增树
106
                  <view class="u-line-1 u-body-value">{{ item.createTime ? timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss') : '-' }}</view>
3d474e84   刘淇   快速工单 加上业务线
107
                </view>
12e66ec8   刘淇   新增树
108
109
  
                <!-- 待办工单(0) 保留原来的操作按钮区 不变 -->
5b5a4862   刘淇   按钮放大
110
111
112
113
114
                <view v-if="activeTab === 0" class="u-body-item u-body-item-btn-wrap u-flex common-justify-between common-item-center mt-20">
                  <up-button type="warning" size="large" @click="handleReject(item)" v-show="nextStepMap[item.taskKey].backShow">回退</up-button>
                  <up-button type="success" size="large" @click="handleRenew(item)" v-show="nextStepMap[item.taskKey].renewShow">重新提交</up-button>
                  <up-button type="primary" size="large" @click="handleProcess(item)">{{ nextStepMap[item.taskKey].btnText }}</up-button>
                  <up-button type="info" size="large" @click="handleDetail(item)">详情</up-button>
3d474e84   刘淇   快速工单 加上业务线
115
                </view>
3d474e84   刘淇   快速工单 加上业务线
116
  
12e66ec8   刘淇   新增树
117
                <!-- 已删除:原来单独的【我发起的/已办】按钮区,不需要了 -->
3d474e84   刘淇   快速工单 加上业务线
118
119
120
121
122
123
              </view>
            </template>
          </up-card>
        </view>
      </z-paging>
  
8ddc6f6e   刘淇   登录 修改样式
124
      <!-- 底部新增工单按钮 -->
6e9f0396   刘淇   全域督察员
125
      <view class="fixed-bottom-btn-wrap" v-if="isAi">
8ddc6f6e   刘淇   登录 修改样式
126
        <up-button type="primary" size="large" @click="handleAddOrder">新增工单</up-button>
3d474e84   刘淇   快速工单 加上业务线
127
128
      </view>
  
8ddc6f6e   刘淇   登录 修改样式
129
      <!-- 回退原因弹窗 -->
3d474e84   刘淇   快速工单 加上业务线
130
131
132
133
134
135
136
137
138
139
      <up-modal
          :show="rejectModalShow"
          title="回退原因"
          :closeOnClickOverlay="false"
          :showConfirmButton="true"
          :showCancelButton="true"
          @cancel="handleRejectModalCancel"
          @confirm="confirmReject"
      >
        <view class="reject-modal-content">
3d474e84   刘淇   快速工单 加上业务线
140
141
142
143
144
145
146
147
          <up-textarea
              v-model.trim="rejectReason"
              placeholder="请输入回退原因(必填)"
              rows="6"
              :count="200"
              maxlength="200"
              class="reject-textarea"
          />
3d474e84   刘淇   快速工单 加上业务线
148
149
150
          <view class="upload-wrap mt-20">
            <view class="upload-title">上传图片(选填)</view>
            <up-upload
8ddc6f6e   刘淇   登录 修改样式
151
                :file-list="rejectImgs.rawImgList.value || []"
3d474e84   刘淇   快速工单 加上业务线
152
153
154
155
156
157
158
159
160
161
162
163
164
                @after-read="rejectImgs.uploadImgs"
                @delete="rejectImgs.deleteImg"
                multiple
                width="70"
                height="70"
                :max-count="rejectImgs.uploadConfig.maxCount"
                :upload-text="rejectImgs.uploadConfig.uploadText"
                :size-type="rejectImgs.uploadConfig.sizeType"
            />
          </view>
        </view>
      </up-modal>
  
8ddc6f6e   刘淇   登录 修改样式
165
      <!-- 验收弹窗 -->
3d474e84   刘淇   快速工单 加上业务线
166
167
168
169
170
171
172
173
174
175
      <up-modal
          :show="acceptModalShow"
          title="验收"
          :closeOnClickOverlay="false"
          :showConfirmButton="true"
          :showCancelButton="true"
          @cancel="handleAcceptModalCancel"
          @confirm="handleAcceptModalConfirm"
      >
        <view class="accept-modal-content">
3d474e84   刘淇   快速工单 加上业务线
176
177
178
179
180
181
          <view class="radio-group-wrap">
            <up-radio-group v-model="acceptRadioValue">
              <up-radio name="0" label="通过"></up-radio>
              <up-radio name="1" label="不通过"></up-radio>
            </up-radio-group>
          </view>
3d474e84   刘淇   快速工单 加上业务线
182
183
184
185
186
187
188
189
190
191
          <view class="textarea-wrap mt-30">
            <up-textarea
                v-model.trim="acceptReason"
                placeholder="请输入验收原因(必填,最多200字)"
                :required="true"
                maxlength="200"
                rows="5"
                count
            />
          </view>
3d474e84   刘淇   快速工单 加上业务线
192
193
194
195
196
197
          <view class="upload-wrap mt-20">
            <view class="upload-title">上传验收图片(选填)</view>
            <up-upload
                :file-list="acceptImgs.rawImgList.value || []"
                @after-read="acceptImgs.uploadImgs"
                @delete="acceptImgs.deleteImg"
3d474e84   刘淇   快速工单 加上业务线
198
199
200
201
202
203
204
205
206
207
208
                multiple
                width="70"
                height="70"
                :max-count="acceptImgs.uploadConfig.maxCount"
                :upload-text="acceptImgs.uploadConfig.uploadText"
                :size-type="acceptImgs.uploadConfig.sizeType"
            />
          </view>
        </view>
      </up-modal>
    </view>
4c54ad5d   刘淇   转工单 选择是 传紧急程度和...
209
210
  </template>
  
3d474e84   刘淇   快速工单 加上业务线
211
  <script setup>
6e9f0396   刘淇   全域督察员
212
  import { ref, computed } from 'vue';
3d474e84   刘淇   快速工单 加上业务线
213
214
215
216
217
218
  import { onShow, onLoad } from '@dcloudio/uni-app';
  import { timeFormat } from '@/uni_modules/uview-plus';
  import {
    myBuzSimplePage,
    todoBuzSimplePage,
    doneBuzSimplePage,
2e2b95d3   刘淇   修改接口路径 和命名
219
220
221
222
    qyUniversalApproval,
    daquUniversalApproval,
    dcyUniversalApproval
  } from '@/api/regional-order-manage/regional-order-manage'
3d474e84   刘淇   快速工单 加上业务线
223
224
  import { useUserStore } from '@/pinia/user';
  import { nextStepMap, buzStatusMap } from '@/common/utils/common'
3d474e84   刘淇   快速工单 加上业务线
225
  import { useUploadImgs } from '@/common/utils/useUploadImgs'
8ddc6f6e   刘淇   登录 修改样式
226
227
  
  // ========== 全局实例 & 常量 ==========
3d474e84   刘淇   快速工单 加上业务线
228
  const userStore = useUserStore();
8ddc6f6e   刘淇   登录 修改样式
229
230
231
232
  const USER_ROLES = userStore.userInfo?.roles || [];
  
  // ========== 基础状态 (按模块分组,语义化更强) ==========
  // tab切换
5b5a4862   刘淇   按钮放大
233
234
  const activeTab = ref(0); // 0-待办 1-已办 2-我发起的任务
  const tabList = [{name: '待办'}, {name: '已办'}, {name: '我发起的任务'}];
8ddc6f6e   刘淇   登录 修改样式
235
  // 排序与搜索
3d474e84   刘淇   快速工单 加上业务线
236
237
  const selectedSortValue = ref(1);
  const sortOptions = ref([
8ddc6f6e   刘淇   登录 修改样式
238
    {name: '位置', id: 1}, {name: '名称', id: 2}, {name: '描述', id: 3}, {name: '编号', id: 4},
3d474e84   刘淇   快速工单 加上业务线
239
  ]);
3d474e84   刘淇   快速工单 加上业务线
240
  const searchValue = ref('');
8ddc6f6e   刘淇   登录 修改样式
241
242
  // 分页相关
  const pagingRef = ref(null);
3d474e84   刘淇   快速工单 加上业务线
243
  const orderList = ref([]);
8ddc6f6e   刘淇   登录 修改样式
244
  
12e66ec8   刘淇   新增树
245
  // ========== 角色权限计算属性 ==========
6e9f0396   刘淇   全域督察员
246
  const isAi = computed(() => {
12e66ec8   刘淇   新增树
247
    const roles = USER_ROLES || [];
8ddc6f6e   刘淇   登录 修改样式
248
    // AI工单派发人员 不显示新增按钮,其他角色显示
12e66ec8   刘淇   新增树
249
    return !roles.includes('AI_dispatcher');
3d474e84   刘淇   快速工单 加上业务线
250
  });
8ddc6f6e   刘淇   登录 修改样式
251
252
253
254
255
  
  // ========== 回退弹窗相关 ==========
  const rejectModalShow = ref(false);
  const rejectReason = ref('');
  const currentRejectItem = ref(null);
3d474e84   刘淇   快速工单 加上业务线
256
  const rejectImgs = useUploadImgs({
8ddc6f6e   刘淇   登录 修改样式
257
    maxCount: 3, uploadText: '选择回退图片', sizeType: ['compressed'], formRef: null, fieldName: 'rejectImgs'
3d474e84   刘淇   快速工单 加上业务线
258
  })
8ddc6f6e   刘淇   登录 修改样式
259
260
261
262
263
264
  
  // ========== 验收弹窗相关 ==========
  const acceptModalShow = ref(false);
  const acceptRadioValue = ref('0'); // 默认通过
  const acceptReason = ref('');
  const currentAcceptItem = ref(null);
3d474e84   刘淇   快速工单 加上业务线
265
  const acceptImgs = useUploadImgs({
8ddc6f6e   刘淇   登录 修改样式
266
    maxCount: 3, uploadText: '选择验收图片', sizeType: ['compressed'], formRef: null, fieldName: 'acceptImgs'
3d474e84   刘淇   快速工单 加上业务线
267
  })
8ddc6f6e   刘淇   登录 修改样式
268
269
270
  
  // ========== 公共封装方法 (核心优化:消灭重复代码) ==========
  /**
12e66ec8   刘淇   新增树
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
   * 统一提示方法
   */
  const showToast = (title, icon = 'none', duration = 2000) => {
    uni.showToast({ title, icon, duration });
  };
  
  /**
   * z-paging 统一操作,处理空指针
   */
  const pagingHandle = (method, ...args) => {
    const paging = pagingRef.value;
    if (paging && typeof paging[method] === 'function') {
      paging[method](...args);
    }
  };
  
  /**
8ddc6f6e   刘淇   登录 修改样式
288
   * 生成统一的临时存储key
8ddc6f6e   刘淇   登录 修改样式
289
290
291
292
293
294
295
   */
  const generateTempKey = (prefix = 'order') => {
    return `${prefix}_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
  };
  
  /**
   * 存储工单数据到本地缓存
8ddc6f6e   刘淇   登录 修改样式
296
297
298
299
300
301
302
303
304
   */
  const setOrderStorage = (item, prefix) => {
    if (!item?.id) return null;
    const tempKey = generateTempKey(prefix);
    try {
      uni.setStorageSync(tempKey, item);
      return tempKey;
    } catch (error) {
      console.error('存储工单数据失败:', error);
12e66ec8   刘淇   新增树
305
      showToast('数据存储异常,请重试');
8ddc6f6e   刘淇   登录 修改样式
306
307
308
309
310
311
      return null;
    }
  };
  
  /**
   * 获取分页请求公共参数
8ddc6f6e   刘淇   登录 修改样式
312
313
314
315
316
317
318
319
320
321
322
323
   */
  const getQueryParams = (pageNo, pageSize) => {
    return {
      searchContent: searchValue.value.trim() || '',
      pageNo,
      pageSize,
      type: selectedSortValue.value
    };
  };
  
  /**
   * 统一调用审批接口
8ddc6f6e   刘淇   登录 修改样式
324
325
326
327
   */
  const callApprovalApi = async (params, taskKey) => {
    if (taskKey === 'shRegionManager') return await dcyUniversalApproval(params);
    if (taskKey === 'regionManager') return await qyUniversalApproval(params);
8ddc6f6e   刘淇   登录 修改样式
328
329
330
    if (USER_ROLES.includes('regional_manager')) return await daquUniversalApproval(params);
    if (USER_ROLES.includes('Inspector_global')) return await dcyUniversalApproval(params);
    if (USER_ROLES.includes('patrol_global')) return await qyUniversalApproval(params);
12e66ec8   刘淇   新增树
331
    throw new Error('未匹配到对应的审批接口,请检查角色或工单taskKey');
8ddc6f6e   刘淇   登录 修改样式
332
333
334
  };
  
  /**
12e66ec8   刘淇   新增树
335
   * 统一跳转工单页面 (支持携带回调事件)
8ddc6f6e   刘淇   登录 修改样式
336
   */
12e66ec8   刘淇   新增树
337
338
339
340
341
342
343
344
  const navToOrderPage = (path, query = {}, events = {}) => {
    const queryStr = Object.keys(query).map(k => `${k}=${encodeURIComponent(query[k])}`).join('&');
    const url = `${path}${queryStr ? '?' + queryStr : ''}`;
    if(Object.keys(events).length) {
      uni.navigateTo({ url, events });
    } else {
      uni.redirectTo({ url });
    }
8ddc6f6e   刘淇   登录 修改样式
345
346
347
  };
  
  /**
12e66ec8   刘淇   新增树
348
   * 刷新列表
8ddc6f6e   刘淇   登录 修改样式
349
   */
12e66ec8   刘淇   新增树
350
  const refreshOrderList = () => pagingHandle('reload');
8ddc6f6e   刘淇   登录 修改样式
351
352
  
  // ========== 业务核心方法 ==========
3d474e84   刘淇   快速工单 加上业务线
353
354
355
  // 分页查询列表
  const queryList = async (pageNo, pageSize) => {
    try {
8ddc6f6e   刘淇   登录 修改样式
356
      const params = getQueryParams(pageNo, pageSize);
3d474e84   刘淇   快速工单 加上业务线
357
      let res;
5b5a4862   刘淇   按钮放大
358
      // 0-待办 1-已办 2-我发起的任务
8ddc6f6e   刘淇   登录 修改样式
359
      if (activeTab.value === 0) res = await todoBuzSimplePage(params);
5b5a4862   刘淇   按钮放大
360
      else if (activeTab.value === 2) res = await myBuzSimplePage(params);
8ddc6f6e   刘淇   登录 修改样式
361
      else res = await doneBuzSimplePage(params);
12e66ec8   刘淇   新增树
362
      pagingHandle('complete', res?.list || [], res?.total || 0);
3d474e84   刘淇   快速工单 加上业务线
363
364
    } catch (error) {
      console.error('加载工单失败:', error);
12e66ec8   刘淇   新增树
365
366
      pagingHandle('complete', false);
      showToast('加载失败,请重试');
3d474e84   刘淇   快速工单 加上业务线
367
368
    }
  };
8ddc6f6e   刘淇   登录 修改样式
369
  
3d474e84   刘淇   快速工单 加上业务线
370
371
  // 标签页切换
  const handleTabChange = (item) => {
3d474e84   刘淇   快速工单 加上业务线
372
    activeTab.value = item.index;
8ddc6f6e   刘淇   登录 修改样式
373
374
    orderList.value = [];
    refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
375
  };
8ddc6f6e   刘淇   登录 修改样式
376
  
3d474e84   刘淇   快速工单 加上业务线
377
378
379
380
  // 排序变更
  const handleSortChange = (val) => {
    selectedSortValue.value = val.id;
    searchValue.value = '';
8ddc6f6e   刘淇   登录 修改样式
381
    refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
382
  };
8ddc6f6e   刘淇   登录 修改样式
383
  
3d474e84   刘淇   快速工单 加上业务线
384
385
386
  // 搜索
  const handleSearch = (val) => {
    searchValue.value = val;
8ddc6f6e   刘淇   登录 修改样式
387
    refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
388
  };
8ddc6f6e   刘淇   登录 修改样式
389
  
3d474e84   刘淇   快速工单 加上业务线
390
391
  // 工单详情
  const handleDetail = (item) => {
12e66ec8   刘淇   新增树
392
393
394
395
396
397
398
399
400
    if (!item?.taskId) return showToast('工单信息异常');
    navToOrderPage('/pages-sub/problem/regional-order-manage/order-detail', {
      taskId: item.taskId,
      activeTab: activeTab.value,
      processInstanceId: item.processInstanceId
    }, {
      needRefresh: () => {
        console.log('详情页返回,触发工单列表刷新');
        refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
401
402
      }
    });
3d474e84   刘淇   快速工单 加上业务线
403
  };
8ddc6f6e   刘淇   登录 修改样式
404
405
  
  // 重新提交工单
3d474e84   刘淇   快速工单 加上业务线
406
  const handleRenew = (item) => {
12e66ec8   刘淇   新增树
407
    if (!item?.id) return showToast('工单信息异常,无法重新提交');
8ddc6f6e   刘淇   登录 修改样式
408
409
    const tempKey = setOrderStorage(item, 'renew_order');
    if (!tempKey) return;
3d474e84   刘淇   快速工单 加上业务线
410
  
8ddc6f6e   刘淇   登录 修改样式
411
412
413
    const pageUrl = USER_ROLES.includes('patrol_global')
        ? '/pages-sub/problem/regional-order-manage/add-patrol-order'
        : '/pages-sub/problem/regional-order-manage/add-order';
3d474e84   刘淇   快速工单 加上业务线
414
  
8ddc6f6e   刘淇   登录 修改样式
415
    navToOrderPage(pageUrl, { isRenew: 1, tempKey });
3d474e84   刘淇   快速工单 加上业务线
416
  };
8ddc6f6e   刘淇   登录 修改样式
417
418
  
  // 处理工单核心逻辑
3d474e84   刘淇   快速工单 加上业务线
419
  const handleProcess = async (item) => {
12e66ec8   刘淇   新增树
420
    if (!item) return showToast('工单信息异常');
8ddc6f6e   刘淇   登录 修改样式
421
    const stepName = nextStepMap[item.taskKey]?.name;
12e66ec8   刘淇   新增树
422
    if (!stepName) return showToast('暂无处理权限或工单状态异常');
3d474e84   刘淇   快速工单 加上业务线
423
    try {
8ddc6f6e   刘淇   登录 修改样式
424
425
426
427
      // 大区经理分配
      if (stepName === '大区经理分配') {
        const tempKey = setOrderStorage(item, 'distribute_order');
        tempKey && navToOrderPage('/pages-sub/problem/regional-order-manage/distribution-order', { tempKey });
3d474e84   刘淇   快速工单 加上业务线
428
      }
8ddc6f6e   刘淇   登录 修改样式
429
430
431
      // 督察员单子大区经理分配
      else if (stepName === '督察员单子大区经理分配') {
        const postData = { taskKey: item.taskKey, taskId: item.taskId, operateType:60, workerDataId:item.id, agree:0, reason:item.remark, roadId:item.roadId, roadName:item.roadName, pressingType:item.pressingType, orderName:item.orderName, expectedFinishDate: item.expectedFinishDate, busiLine:item.busiLine };
12e66ec8   刘淇   新增树
432
433
        await dcyUniversalApproval(postData);
        showToast('分配成功', 'success');
8ddc6f6e   刘淇   登录 修改样式
434
        refreshOrderList();
2e2b95d3   刘淇   修改接口路径 和命名
435
      }
8ddc6f6e   刘淇   登录 修改样式
436
437
438
439
440
441
      // 验收弹窗
      else if (['巡查员验收', '养护组长验收'].includes(stepName)) {
        currentAcceptItem.value = item;
        acceptReason.value = '';
        acceptRadioValue.value = '0';
        acceptModalShow.value = true;
3d474e84   刘淇   快速工单 加上业务线
442
      }
8ddc6f6e   刘淇   登录 修改样式
443
444
      // 发起人确认-结束工单
      else if (stepName === '发起人确认') {
3d474e84   刘淇   快速工单 加上业务线
445
446
447
        uni.showModal({
          title: "结束工单",
          content: "请确定是否结束工单?",
8ddc6f6e   刘淇   登录 修改样式
448
          success: async (res) => {
3d474e84   刘淇   快速工单 加上业务线
449
            if (res.confirm) {
3d474e84   刘淇   快速工单 加上业务线
450
              const requestData = {
8ddc6f6e   刘淇   登录 修改样式
451
452
                workerDataId: item.id, taskKey: 'ylInspectorStart', taskId: item.taskId,
                operateType: 200, agree: 1, reason: '结束工单'
3d474e84   刘淇   快速工单 加上业务线
453
              };
8ddc6f6e   刘淇   登录 修改样式
454
              await callApprovalApi(requestData, item.taskKey);
12e66ec8   刘淇   新增树
455
              showToast('结束成功', 'success');
8ddc6f6e   刘淇   登录 修改样式
456
              refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
457
            }
8ddc6f6e   刘淇   登录 修改样式
458
          }
3d474e84   刘淇   快速工单 加上业务线
459
460
461
462
        });
      }
    } catch (error) {
      console.error('处理工单失败:', error);
12e66ec8   刘淇   新增树
463
      showToast(error.msg || error.message || '处理失败,请重试');
3d474e84   刘淇   快速工单 加上业务线
464
465
    }
  };
8ddc6f6e   刘淇   登录 修改样式
466
467
  
  // 回退工单-打开弹窗
3d474e84   刘淇   快速工单 加上业务线
468
  const handleReject = (item) => {
12e66ec8   刘淇   新增树
469
    if (!item?.id) return showToast('工单信息异常,无法回退');
3d474e84   刘淇   快速工单 加上业务线
470
    currentRejectItem.value = item;
8ddc6f6e   刘淇   登录 修改样式
471
472
473
    rejectReason.value = '';
    rejectImgs.clearImgs();
    rejectModalShow.value = true;
3d474e84   刘淇   快速工单 加上业务线
474
  };
8ddc6f6e   刘淇   登录 修改样式
475
476
  
  // 关闭回退弹窗-重置状态
3d474e84   刘淇   快速工单 加上业务线
477
478
479
  const handleRejectModalCancel = () => {
    rejectModalShow.value = false;
    rejectReason.value = '';
8ddc6f6e   刘淇   登录 修改样式
480
    rejectImgs.clearImgs();
3d474e84   刘淇   快速工单 加上业务线
481
  };
8ddc6f6e   刘淇   登录 修改样式
482
  
3d474e84   刘淇   快速工单 加上业务线
483
484
  // 确认回退工单
  const confirmReject = async () => {
8ddc6f6e   刘淇   登录 修改样式
485
    const reason = rejectReason.value.trim();
12e66ec8   刘淇   新增树
486
    if (!reason) return showToast('请填写回退原因');
8ddc6f6e   刘淇   登录 修改样式
487
    const item = currentRejectItem.value;
12e66ec8   刘淇   新增树
488
    if (!item?.id) return showToast('工单信息异常');
8ddc6f6e   刘淇   登录 修改样式
489
490
  
    uni.showLoading({title: '提交中...', mask: true});
3d474e84   刘淇   快速工单 加上业务线
491
    try {
3d474e84   刘淇   快速工单 加上业务线
492
      const requestData = {
8ddc6f6e   刘淇   登录 修改样式
493
494
        returnImgs: rejectImgs.getSuccessImgUrls(), workerDataId: item.id, taskKey: item.taskKey,
        taskId: item.taskId, operateType: nextStepMap[item.taskKey].operateTypeNoPass, agree:1, reason
3d474e84   刘淇   快速工单 加上业务线
495
      };
8ddc6f6e   刘淇   登录 修改样式
496
      await callApprovalApi(requestData, item.taskKey);
12e66ec8   刘淇   新增树
497
      showToast('回退成功', 'success');
8ddc6f6e   刘淇   登录 修改样式
498
499
      handleRejectModalCancel();
      refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
500
501
    } catch (error) {
      console.error('回退工单失败:', error);
12e66ec8   刘淇   新增树
502
      showToast(error.msg || error.message || '回退失败,请重试');
3d474e84   刘淇   快速工单 加上业务线
503
    } finally {
3d474e84   刘淇   快速工单 加上业务线
504
505
506
      uni.hideLoading();
    }
  };
8ddc6f6e   刘淇   登录 修改样式
507
  
3d474e84   刘淇   快速工单 加上业务线
508
509
  // 新增工单
  const handleAddOrder = () => {
8ddc6f6e   刘淇   登录 修改样式
510
511
512
513
    const pageUrl = USER_ROLES.includes('patrol_global')
        ? '/pages-sub/problem/regional-order-manage/add-patrol-order'
        : '/pages-sub/problem/regional-order-manage/add-order';
    navToOrderPage(pageUrl);
3d474e84   刘淇   快速工单 加上业务线
514
  };
8ddc6f6e   刘淇   登录 修改样式
515
516
  
  // 关闭验收弹窗-重置状态
3d474e84   刘淇   快速工单 加上业务线
517
518
  const handleAcceptModalCancel = () => {
    acceptModalShow.value = false;
8ddc6f6e   刘淇   登录 修改样式
519
520
521
    acceptReason.value = '';
    acceptRadioValue.value = '0';
    acceptImgs.clearImgs();
3d474e84   刘淇   快速工单 加上业务线
522
  };
8ddc6f6e   刘淇   登录 修改样式
523
524
  
  // 验收提交
3d474e84   刘淇   快速工单 加上业务线
525
  const handleAcceptModalConfirm = async () => {
8ddc6f6e   刘淇   登录 修改样式
526
    const reason = acceptReason.value.trim();
12e66ec8   刘淇   新增树
527
528
    if (!reason) return showToast('请填写验收原因');
    if (reason.length > 200) return showToast('验收原因最多200字');
8ddc6f6e   刘淇   登录 修改样式
529
530
  
    const item = currentAcceptItem.value;
12e66ec8   刘淇   新增树
531
    if (!item?.id) return showToast('工单信息异常');
2e2b95d3   刘淇   修改接口路径 和命名
532
  
12e66ec8   刘淇   新增树
533
    uni.showLoading({title: '提交中...', mask: true});
8ddc6f6e   刘淇   登录 修改样式
534
535
536
537
538
539
540
    try {
      const postData = {
        returnImgs: acceptImgs.getSuccessImgUrls(), taskKey: item.taskKey, workerDataId: item.id,
        taskId: item.taskId, agree: acceptRadioValue.value, reason,
        operateType: acceptRadioValue.value === '0' ? nextStepMap[item.taskKey].operateTypePass : nextStepMap[item.taskKey].operateTypeNoPass
      };
      await callApprovalApi(postData, item.taskKey);
12e66ec8   刘淇   新增树
541
      showToast('提交成功', 'success');
8ddc6f6e   刘淇   登录 修改样式
542
543
      handleAcceptModalCancel();
      refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
544
    } catch (error) {
3d474e84   刘淇   快速工单 加上业务线
545
      console.error('验收失败:', error);
12e66ec8   刘淇   新增树
546
547
548
      showToast(error.msg || error.message || '验收提交失败,请重试');
    } finally {
      uni.hideLoading();
3d474e84   刘淇   快速工单 加上业务线
549
550
    }
  };
8ddc6f6e   刘淇   登录 修改样式
551
552
  
  // ========== 页面生命周期 ==========
3d474e84   刘淇   快速工单 加上业务线
553
  onLoad(() => {
8ddc6f6e   刘淇   登录 修改样式
554
    refreshOrderList();
3d474e84   刘淇   快速工单 加上业务线
555
556
557
  });
  </script>
  
4c54ad5d   刘淇   转工单 选择是 传紧急程度和...
558
  <style scoped lang="scss">
3d474e84   刘淇   快速工单 加上业务线
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
  .page-container {
    min-height: 100vh;
    background-color: #fafafa;
  }
  
  // 顶部固定区域
  .header-wrap {
    background-color: #fff;
  }
  
  // 搜索栏样式
  .search-header {
    display: flex;
    align-items: center;
    padding: 20rpx;
    box-sizing: border-box;
  
    .select-wrap {
      width: 120rpx;
      margin-right: 20rpx;
8ddc6f6e   刘淇   登录 修改样式
579
      :deep(.u-select), :deep(.u-input__placeholder) {
3d474e84   刘淇   快速工单 加上业务线
580
581
582
        width: 100%;
        font-size: 28rpx;
      }
3d474e84   刘淇   快速工单 加上业务线
583
584
585
586
587
588
589
    }
  
    .search-input-wrap {
      flex: 1;
    }
  }
  
12e66ec8   刘淇   新增树
590
591
592
593
594
595
  // 工单列表样式
  .common-card-list {
    padding: calc(var(--status-bar-height) + 140rpx) 0 30rpx;
    box-sizing: border-box;
  }
  
3d474e84   刘淇   快速工单 加上业务线
596
597
598
599
600
601
602
603
  // 工单卡片样式
  .order-card {
    margin: 0 20rpx 20rpx;
    background: #fff;
    border-radius: 12rpx;
    box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
  }
  
5b5a4862   刘淇   按钮放大
604
605
606
607
608
  .u-body-item-btn-wrap :deep(.u-button--large){
    height: 28px;
  }
  
  
12e66ec8   刘淇   新增树
609
610
611
612
613
  // 新增样式:解决按钮和文字间距、排版问题
  .flex-1 { flex: 1; }
  .text-right { text-align: right; }
  .ml-10 { margin-left: 10rpx; }
  
8ddc6f6e   刘淇   登录 修改样式
614
615
  // 弹窗公共样式
  .reject-modal-content, .accept-modal-content {
3d474e84   刘淇   快速工单 加上业务线
616
617
618
619
620
    width: 100%;
    box-sizing: border-box;
    padding: 10rpx 0;
  }
  
3d474e84   刘淇   快速工单 加上业务线
621
  .upload-wrap {
3d474e84   刘淇   快速工单 加上业务线
622
623
624
625
626
627
628
    .upload-title {
      font-size: 28rpx;
      color: #333;
      margin-bottom: 10rpx;
    }
  }
  
8ddc6f6e   刘淇   登录 修改样式
629
  // 验收弹窗单选框样式
3d474e84   刘淇   快速工单 加上业务线
630
631
632
  .radio-group-wrap {
    display: flex;
    align-items: center;
8ddc6f6e   刘淇   登录 修改样式
633
    gap: 40rpx;
3d474e84   刘淇   快速工单 加上业务线
634
635
636
637
638
639
    font-size: 28rpx;
    margin-bottom: 20rpx;
  }
  
  .textarea-wrap {
    width: 100%;
3d474e84   刘淇   快速工单 加上业务线
640
  }
4c54ad5d   刘淇   转工单 选择是 传紧急程度和...
641
  
8ddc6f6e   刘淇   登录 修改样式
642
643
644
  // 间距公共样式
  .mt-20 { margin-top: 20rpx; }
  .mt-30 { margin-top: 30rpx; }
4c54ad5d   刘淇   转工单 选择是 传紧急程度和...
645
  </style>