吉安感知网项目-前端
罗广辉
6 days ago 34d048b470fa0299e5b81c76ba9ae8e28ddc65df
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<template>
    <el-dialog
        class="gd-dialog"
        v-model="visible"
        title="转为事件并分发"
        @closed="handleClosed"
        width="500px"
        destroy-on-close
        :close-on-click-modal="false"
    >
        <el-form class="gd-dialog-form" ref="formRef" :model="formData" :rules="rules" label-width="100px">
            <el-row>
                <el-col :span="24">
                    <el-form-item label="事件名称" prop="eventName">
                        <el-input class="gd-input" v-model="formData.eventName" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="处置部门" prop="disposeDept">
                        <el-tree-select
                            class="gd-select"
                            popper-class="gd-tree-select-popper"
                            v-model="formData.disposeDept"
                            node-key="id"
                            :data="deptTree"
                            :props="treeProps"
                            check-strictly
                            @change="deptChange"
                            clearable
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="工单处置人" prop="disposeUser">
                        <el-select
                            class="gd-select"
                            popper-class="gd-select-popper"
                            v-model="formData.disposeUser"
                            placeholder="请选择"
                            :disabled="!formData.disposeDept"
                            clearable
                        >
                            <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id" />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form>
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">取消</el-button>
            <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleSubmit">
                保存
            </el-button>
        </template>
    </el-dialog>
</template>
 
<script setup>
import { ref, watch } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules } from '@ztzf/utils'
import { gdTaskResultDistributeApi, getUserListApi } from './achievementApi'
 
// 初始化表单数据
const initForm = () => ({
    eventName: '', // 事件名称
    disposeDept: '', // 处置部门
    disposeUser: '', // 工单处置人
})
 
const deptTree = inject('deptTree')
const treeProps = inject('treeProps')
 
const emit = defineEmits(['success'])
const formRef = ref(null)
const formData = ref(initForm())
const visible = defineModel()
const submitting = ref(false)
const userList = ref([])
const currentRow = ref(null) // 当前线索数据
const workOrderId = ref(null) // 工单ID
 
// 校验规则
const rules = {
    eventName: fieldRules(true, 50),
    disposeDept: fieldRules(true),
    disposeUser: fieldRules(true),
}
 
// 部门变更时清空人员并重新获取
function deptChange() {
    formData.value.disposeUser = ''
}
 
// 获取用户列表
function getUserList() {
    if (!formData.value.disposeDept) {
        userList.value = []
        return
    }
    getUserListApi(formData.value.disposeDept).then(res => {
        userList.value = res?.data?.data?.records ?? []
    })
}
 
// 监听部门变化获取用户列表
watch(() => formData.value.disposeDept, getUserList)
 
// 提交分发
async function handleSubmit() {
    const isValid = await formRef.value?.validate().catch(() => false)
    if (!isValid) return
    submitting.value = true
    try {
        const params = {
            areaCode: currentRow.value.areaCode || '',
            disposeDept: formData.value.disposeDept,
            disposeUser: formData.value.disposeUser,
            eventName: formData.value.eventName,
            latitude: currentRow.value.latitude || 0,
            longitude: currentRow.value.longitude || 0,
            resultId: currentRow.value.id,
            workOrderId: workOrderId.value,
        }
        await gdTaskResultDistributeApi(params)
        ElMessage.success('分发成功')
        visible.value = false
        emit('success')
    } finally {
        submitting.value = false
    }
}
 
// 关闭后重置
function handleClosed() {
    formData.value = initForm()
    userList.value = []
}
 
// 打开弹框
async function open({ row, workOrderId: orderId } = {}) {
    currentRow.value = row
    workOrderId.value = orderId
    formData.value = initForm()
}
 
defineExpose({ open })
</script>
 
<style lang="scss" scoped></style>