| | |
| | | <view class="section-title">基本信息</view> |
| | | <view class="info-item"> |
| | | <view class="label">任务编号</view> |
| | | <view class="value">{{ taskDetail.taskCode }}</view> |
| | | <view class="value">{{ taskDetail.showTaskCode }}</view> |
| | | </view> |
| | | <view class="info-item"> |
| | | <view class="label">任务类型</view> |
| | |
| | | <view |
| | | class="assignee-item" |
| | | v-for="(assignee, index) in taskDetail.assignees" |
| | | :key="'assignee-' + (assignee.userId || assignee.userName || index)" |
| | | :key="getAssigneeKey(assignee, index)" |
| | | > |
| | | <view class="assignee-index">{{ index + 1 }}</view> |
| | | <view class="assignee-info"> |
| | |
| | | <view |
| | | class="payment-record-item" |
| | | v-for="(payment, index) in paymentInfo.paidPayments" |
| | | :key="'payment-' + (payment.id || index)" |
| | | :key="getPaymentKey(payment, index)" |
| | | > |
| | | <view class="payment-header"> |
| | | <view |
| | |
| | | // 出发前保证就绪(保留向后兼容) |
| | | async ensureReadyThenDepart() { |
| | | this.handleDepartAction() |
| | | } |
| | | }, |
| | | |
| | | // 获取执行人员的key值 |
| | | getAssigneeKey(assignee, index) { |
| | | // 确保返回有效的字符串key |
| | | if (!assignee) return 'assignee-' + index; |
| | | // 优先使用userId,其次是userName,最后使用index |
| | | const key = assignee.userId || assignee.userName || index; |
| | | return 'assignee-' + (key !== null && key !== undefined ? key : index); |
| | | }, |
| | | |
| | | // 获取支付记录的key值 |
| | | getPaymentKey(payment, index) { |
| | | // 确保返回有效的字符串key |
| | | if (!payment) return 'payment-' + index; |
| | | // 优先使用id,其次使用index |
| | | const key = payment.id || index; |
| | | return 'payment-' + (key !== null && key !== undefined ? key : index); |
| | | }, |
| | | |
| | | } |
| | | } |
| | | </script> |