吉安感知网项目-前端
chenyao
2026-01-30 b2ff4524ac1de01b14b9adeea1cea8347a80cd5b
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<template>
    <el-dialog class="gd-dialog" v-model="visible" title="查看" @closed="visible = false" width="1000px" destroy-on-close>
        <div v-loading="loading">
            <el-table :data="list" class="gd-dialog-table">
                <el-table-column label="线索缩略图" width="120">
                    <template v-slot="{ row }">
                        <el-image
                            v-if="row.resultUrl"
                            :src="row.resultUrl"
                            :preview-src-list="[row.resultUrl]"
                            fit="cover"
                            style="width: 80px; height: 60px"
                            preview-teleported
                        />
                        <span v-else>-</span>
                    </template>
                </el-table-column>
                <el-table-column prop="resultCode" show-overflow-tooltip label="线索编号" />
                <el-table-column prop="shootTime" show-overflow-tooltip label="拍摄时间" />
                <el-table-column label="线索位置" show-overflow-tooltip>
                    <template v-slot="{ row }">
                        {{ formatLocation(row) }}
                    </template>
                </el-table-column>
                <el-table-column prop="distributeStatus" show-overflow-tooltip label="线索状态">
                    <template v-slot="{ row }">
                        {{ getDistributeStatusLabel(row.distributeStatus) }}
                    </template>
                </el-table-column>
                <el-table-column prop="distributeDeptName" show-overflow-tooltip label="分发部门" />
                <el-table-column prop="distributeUserName" show-overflow-tooltip label="分发人员" />
                <el-table-column label="操作" class-name="operation-btns" width="140">
                    <template v-slot="{ row }">
                        <el-link type="primary" @click="openDistributeDialog(row)" v-if="permission.clueEvents_distribute && (row.distributeStatus === 0 || row.distributeStatus === 2)">
                            转为事件并分发
                        </el-link>
                        <el-button disabled type="text" v-else>转为事件并分发</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </div>
 
        <!-- <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">关闭</el-button>
        </template> -->
 
        <DistributeDiaLog
            ref="distributeDialogRef"
            v-if="distributeDialogVisible"
            v-model="distributeDialogVisible"
            @success="getList"
        />
    </el-dialog>
</template>
 
<script setup>
import { ref } from 'vue'
import { gdTaskResultListApi } from './achievementApi'
import DistributeDiaLog from './DistributeDiaLog.vue'
 
const store = useStore()
const requester = computed(() => store.state.user.userInfo?.role_id === '2014158512610869250')
const activeName = ref('all')
 
const permission = computed(() => store.state.user.permission)
console.log(permission.value.clueEvents_distribute, 'permission')
 
const visible = defineModel()
const loading = ref(false)
const list = ref([])
const currentRow = ref(null) // 当前行数据
const distributeDialogRef = ref(null)
const distributeDialogVisible = ref(false)
 
// 分发状态选项
const distributeStatusOptions = [
    { label: '未分发', value: 0 },
    { label: '已分发', value: 1 },
    { label: '已退回', value: 2 },
    { label: '已确认', value: 3 },
]
 
// 获取分发状态标签
function getDistributeStatusLabel(value) {
    const item = distributeStatusOptions.find(item => item.value === value)
    return item ? item.label : value
}
 
// 格式化位置信息
function formatLocation(row) {
    if (row.longitude && row.latitude) {
        return `${row.longitude}, ${row.latitude}`
    }
    return row.areaCode || '-'
}
 
// 获取成果列表
async function getList() {
    if (!currentRow.value?.id) return
    loading.value = true
    try {
        const res = await gdTaskResultListApi({ patrolTaskId: currentRow.value.id })
        list.value = res?.data?.data ?? []
    } finally {
        loading.value = false
    }
}
 
// 打开分发弹框
function openDistributeDialog(row) {
    distributeDialogVisible.value = true
    nextTick(() => {
        distributeDialogRef.value?.open({
            row,
            workOrderId: currentRow.value.workOrderId,
        })
    })
}
 
// 打开弹框
async function open({ row } = {}) {
    currentRow.value = row
    await getList()
}
 
defineExpose({ open })
</script>
 
<style lang="scss" scoped>
    .disabled-text {
        color: #C0C4CC;
        cursor: not-allowed;
    }
</style>