Files

155 lines
4.3 KiB
Vue
Raw Permalink Normal View History

2026-08-18 18:05:16 +08:00
<template>
<view class="page-list">
<scroll-view
class="list-scroll"
scroll-y
refresher-enabled
:refresher-triggered="refreshing"
@refresherrefresh="handleRefresh"
>
<view class="list-wrap">
<view
v-for="(item, index) in listData"
:key="item.TaskCode || index"
class="card-item"
@click="handleItemClick(item)"
>
<view class="card-header">
<text class="card-code">{{ item.TaskCode || '--' }}</text>
<text class="card-tag status-1">焊口 {{ formatJointCount(item) }}</text>
2026-08-18 18:05:16 +08:00
</view>
<view class="card-body">
<view class="card-row">
<text class="row-label">任务日期</text>
<text class="row-value">{{ fmtDate(item.TaskDate) }}</text>
</view>
<view class="card-row">
<text class="row-label">单位工程</text>
<text class="row-value">{{ item.UnitWorkName || '--' }}</text>
</view>
<view class="card-row">
<text class="row-label">施工单位</text>
<text class="row-value">{{ item.UnitName || '--' }}</text>
</view>
<view class="card-row">
<text class="row-label">班组</text>
<text class="row-value">{{ item.TeamGroupName || '--' }}</text>
</view>
<view class="card-row">
<text class="row-label">流水号</text>
<text class="row-value">{{ item.SerialNumber || '--' }}</text>
</view>
</view>
</view>
<u-empty
v-if="!loading && listData.length === 0"
mode="list"
text="暂无焊接任务单"
/>
</view>
</scroll-view>
</view>
</template>
<script setup>
/**
* 焊接任务单列表:自动带入登录人 teamGroupId / unitWorkId + 当前项目查询
* 使用 Promise 链而非 async/await,规避微信小程序 Babel regenerator 的 "a" is read-only
2026-08-18 18:05:16 +08:00
*/
import { ref } from 'vue'
import { onShow } from '@dcloudio/uni-app'
import { useUserStore } from '@/store'
import { reqWeldTaskListByTeamGroup } from '@/api/hj.js'
const userStore = useUserStore()
const listData = ref([])
const loading = ref(false)
const refreshing = ref(false)
const resolveTeamGroupId = (user) => {
if (!user) return ''
return user.teamGroupId || user.TeamGroupId || ''
}
const resolveUnitWorkId = (user) => {
if (!user) return ''
return user.unitWorkId || user.UnitWorkId || ''
}
const formatJointCount = (item) => {
if (!item) return 0
if (item.WeldJointCount == null) return 0
return item.WeldJointCount
}
2026-08-18 18:05:16 +08:00
const fmtDate = (val) => {
if (!val) return '--'
const d = new Date(val)
if (isNaN(d.getTime())) return String(val).slice(0, 10)
const y = d.getFullYear()
const m = String(d.getMonth() + 1).padStart(2, '0')
const day = String(d.getDate()).padStart(2, '0')
return y + '-' + m + '-' + day
2026-08-18 18:05:16 +08:00
}
const fetchList = () => {
const project = userStore.currentProject
const projectId = project ? project.ProjectId : ''
2026-08-18 18:05:16 +08:00
if (!projectId) {
uni.showToast({ title: '请先选择项目', icon: 'none' })
listData.value = []
refreshing.value = false
2026-08-18 18:05:16 +08:00
return
}
if (loading.value) return
loading.value = true
const user = userStore.userInfo
const teamGroupId = resolveTeamGroupId(user)
const unitWorkId = resolveUnitWorkId(user)
const query = {
projectId: projectId,
teamGroupId: teamGroupId || '',
unitWorkId: unitWorkId || '',
}
reqWeldTaskListByTeamGroup(query).then(function (res) {
const data = res ? res.data : null
listData.value = Array.isArray(data) ? data.slice() : []
}).catch(function (e) {
2026-08-18 18:05:16 +08:00
console.error('任务单列表加载失败:', e)
listData.value = []
}).then(function () {
2026-08-18 18:05:16 +08:00
loading.value = false
refreshing.value = false
})
2026-08-18 18:05:16 +08:00
}
const handleRefresh = () => {
refreshing.value = true
fetchList()
}
const handleItemClick = (item) => {
const project = userStore.currentProject
const projectId = (item && item.ProjectId) || (project && project.ProjectId) || ''
const taskCode = (item && item.TaskCode) || ''
const unitWorkId = (item && (item.UnitWorkId || item.unitWorkId)) || resolveUnitWorkId(userStore.userInfo) || ''
2026-08-18 18:05:16 +08:00
if (!projectId || !taskCode) {
uni.showToast({ title: '任务单信息不完整', icon: 'none' })
return
}
let url = '/scanpages/hj/weld_task_detail?projectId=' + encodeURIComponent(projectId) + '&taskCode=' + encodeURIComponent(taskCode)
2026-08-18 18:05:16 +08:00
if (unitWorkId) {
url = url + '&unitWorkId=' + encodeURIComponent(unitWorkId)
2026-08-18 18:05:16 +08:00
}
uni.navigateTo({ url: url })
2026-08-18 18:05:16 +08:00
}
onShow(function () {
2026-08-18 18:05:16 +08:00
fetchList()
})
</script>