examinerDialog.vue
3.87 KB
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
<template>
<el-dialog v-model="showDialog" title="选择考官" destroy-on-close>
<el-button :disabled="forbid" icon="Finished" type="success" @click="handelBatch">确定选择</el-button>
<el-button icon="plus" type="primary" @click="handelAdd">添加考官</el-button>
<br>
<br>
<el-table
ref="multipleTableRef" v-loading="showLoading" border :data="list"
style="width: 100%;" @selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="40" align="center" />
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="姓名" align="center" prop="perName" show-overflow-tooltip />
<el-table-column label="会员号" align="center" prop="perCode" />
<el-table-column label="有效日期" align="center" min-width="100">
<template #default="{row}">
<span :class="{'text-danger':row.canChoose!=1}">{{
parseTime(row?.roleInfo?.validTime, '{y}-{m}-{d}')
}}</span>
</template>
</el-table-column>
<el-table-column label="注册单位" align="center" prop="roleInfo.unit" show-overflow-tooltip />
<el-table-column label="添加方式" align="center" show-overflow-tooltip>
<template #default="{row}">
{{ row.type == 1 ? '省级' : '自行添加' }}
</template>
</el-table-column>
</el-table>
<!-- <ChooseExaminer ref="ChooseExaminerRef" is-validity="0" @chosen="chosenExaminer" />-->
<ChooseRankExaminer ref="ChooseRankExaminerRef" is-validity="0" @chosen="chosenExaminer" />
</el-dialog>
</template>
<script setup>
import { ref, computed, nextTick, getCurrentInstance } from 'vue'
import { listApi, otherAdd, selfAdd } from '@/api/exam/examinationAudit'
import useUserStore from '@/store/modules/user'
// import ChooseExaminer from '/@/views/exam/components/chooseExaminer.vue'
import ChooseRankExaminer from '/@/views/exam/components/chooseRankExaminer.vue'
const emit = defineEmits(['handelExaminer'])
const { proxy } = getCurrentInstance()
const memId = computed(() => useUserStore().memId)
const multipleTableRef = ref(null)
const showDialog = ref(false)
const list = ref([])
const ids = ref([])
const showLoading = ref(false)
const forbid = ref(true)
const selectList = ref([])
async function getList() {
showLoading.value = true
const res = await listApi({
memId: memId.value
})
showLoading.value = false
list.value = res.rows
await nextTick(() => {
for (const val of list.value) {
if (val.roleInfo) val.roleInfo = JSON.parse(val.roleInfo)
if (selectList.value.some(item => item.perId == val.perId)) {
multipleTableRef.value.toggleRowSelection(val, true)
}
}
})
}
function open(arr) {
selectList.value = arr
forbid.value = true
showDialog.value = true
getList()
}
function handelBatch() {
const arr = []
let flag = true
for (const val of ids.value) {
if (val.canChoose != 1) {
proxy.$modal.msgError(`${val.perName}考官资质已过期`)
flag = false
return
} else {
arr.push({
perId: val.perId,
name: val.perName
})
}
}
if (ids.value.length % 2 === 0) {
proxy.$modal.msgError('录入的考官人数必须为单数')
return
}
if (ids.value.length > 3) {
proxy.$modal.msgError('录入的考官人数不能超过3人')
return
}
if (flag) {
emit('handelExaminer', arr)
showDialog.value = false
}
}
function handleSelectionChange(row) {
ids.value = row
forbid.value = !row.length
}
function handelAdd() {
proxy.$refs['ChooseRankExaminerRef'].open({
ec: memId.value,
type: '1',
chosen: list.value
})
}
async function chosenExaminer(row) {
await selfAdd(memId.value, row.perId)
await proxy.$modal.msgSuccess('操作成功!')
await getList()
}
defineExpose({
open
})
</script>
<style scoped lang="scss">
</style>