|
|
|
@ -99,21 +99,22 @@ |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="培训项目-多旋翼" prop="dxy"> |
|
|
|
|
<el-checkbox-group v-model="form.dxy"> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in driverOptions" |
|
|
|
|
:key="item.value" |
|
|
|
|
:label="item.value" |
|
|
|
|
:value="item.value" |
|
|
|
|
> |
|
|
|
|
{{ item.label }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-checkbox-group> |
|
|
|
|
<el-col :span="12" v-for="(it, index) in form.modelList" :key="index"> |
|
|
|
|
<el-form-item :label="`培训项目-${it.modelName}`" prop="dxy"> |
|
|
|
|
<!-- <el-checkbox-group> --> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in it.schoolTypeList" |
|
|
|
|
v-model="item.checked" |
|
|
|
|
:checked="item.checked" |
|
|
|
|
:key="item.schoolTypeId" |
|
|
|
|
:value="item.schoolTypeId" |
|
|
|
|
> |
|
|
|
|
{{ item.typeName }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
<!-- </el-checkbox-group> --> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<!-- <el-col :span="12"> |
|
|
|
|
<el-form-item label="培训项目-垂直起降" prop="czqj"> |
|
|
|
|
<el-checkbox-group v-model="form.czqj"> |
|
|
|
|
<el-checkbox |
|
|
|
@ -154,7 +155,7 @@ |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-checkbox-group> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-col> --> |
|
|
|
|
<el-col :span="8"> |
|
|
|
|
<el-form-item label="合格证图片" prop="certs"> |
|
|
|
|
<UploadImgs v-model="form.certs" height="100px" width="100px" /> |
|
|
|
@ -171,31 +172,29 @@ |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="优势标签" prop="schoolTagList"> |
|
|
|
|
<el-checkbox-group v-model="form.schoolTagList"> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in goodOptions" |
|
|
|
|
:key="item.value" |
|
|
|
|
:label="item.value" |
|
|
|
|
:value="item.value" |
|
|
|
|
> |
|
|
|
|
{{ item.label }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-checkbox-group> |
|
|
|
|
<el-form-item label="优势标签"> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in form.schoolTagList" |
|
|
|
|
v-model="item.checked" |
|
|
|
|
:checked="item.checked" |
|
|
|
|
:key="item.id" |
|
|
|
|
:value="item.id" |
|
|
|
|
> |
|
|
|
|
{{ item.tag }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="其他服务" prop="schoolServiceList"> |
|
|
|
|
<el-checkbox-group v-model="form.schoolServiceList"> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in serviceOptions" |
|
|
|
|
:key="item.value" |
|
|
|
|
:label="item.value" |
|
|
|
|
:value="item.value" |
|
|
|
|
> |
|
|
|
|
{{ item.label }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-checkbox-group> |
|
|
|
|
<el-checkbox |
|
|
|
|
v-for="item in form.schoolServiceList" |
|
|
|
|
v-model="item.checked" |
|
|
|
|
:checked="item.checked" |
|
|
|
|
:key="item.id" |
|
|
|
|
:value="item.id" |
|
|
|
|
> |
|
|
|
|
{{ item.serviceName }} |
|
|
|
|
</el-checkbox> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
@ -213,8 +212,8 @@ |
|
|
|
|
<el-row> |
|
|
|
|
<el-divider direction="horizontal" content-position="left">审核信息</el-divider> |
|
|
|
|
<el-col :span="6" :offset="0"> |
|
|
|
|
<el-form-item label="审核结果" prop="shjg"> |
|
|
|
|
<el-radio-group v-model="form.shjg"> |
|
|
|
|
<el-form-item label="审核结果" prop="status"> |
|
|
|
|
<el-radio-group v-model="form.status"> |
|
|
|
|
<el-radio :label="2" :value="2">通过</el-radio> |
|
|
|
|
<el-radio :label="3" :value="3">不通过</el-radio> |
|
|
|
|
</el-radio-group> |
|
|
|
@ -237,7 +236,13 @@ |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<script setup name="Station"> |
|
|
|
|
import { searchStation, auditStation, updateStation } from '@/api/uav/regiest' |
|
|
|
|
import { |
|
|
|
|
searchStation, |
|
|
|
|
auditStation, |
|
|
|
|
updateStation, |
|
|
|
|
stationDetail |
|
|
|
|
// getCarTypeList |
|
|
|
|
} from '@/api/uav/regiest' |
|
|
|
|
|
|
|
|
|
const message = useMessage() |
|
|
|
|
|
|
|
|
@ -260,30 +265,245 @@ const rules = { |
|
|
|
|
const dialogVisible = ref(false) |
|
|
|
|
const dialogType = ref('audit') |
|
|
|
|
const driverOptions = ref([ |
|
|
|
|
{ label: '小型-视距内驾驶员', value: 1 }, |
|
|
|
|
{ label: '小型-超视距驾驶员', value: 2 }, |
|
|
|
|
{ label: '小型-教员', value: 3 }, |
|
|
|
|
{ label: '中型-视距内驾驶员', value: 4 }, |
|
|
|
|
{ label: '中型-超视距驾驶员', value: 5 }, |
|
|
|
|
{ label: '中型-教员', value: 6 } |
|
|
|
|
{ |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
schoolDriverTypeVoList: [ |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1000, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20021, |
|
|
|
|
typeName: '小型-视距内驾驶员', |
|
|
|
|
sort: 1 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1002, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20022, |
|
|
|
|
typeName: '小型-超视距驾驶员', |
|
|
|
|
sort: 2 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1004, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20023, |
|
|
|
|
typeName: '小型-教员', |
|
|
|
|
sort: 3 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1001, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20021, |
|
|
|
|
typeName: '中型-视距内驾驶员', |
|
|
|
|
sort: 6 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1003, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20022, |
|
|
|
|
typeName: '中型-超视距驾驶员', |
|
|
|
|
sort: 7 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1005, |
|
|
|
|
modelId: 10001, |
|
|
|
|
modelName: '多旋翼', |
|
|
|
|
typeId: 20023, |
|
|
|
|
typeName: '中型-教员', |
|
|
|
|
sort: 8 |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
schoolDriverTypeVoList: [ |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1010, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20026, |
|
|
|
|
typeName: '小型-视距内驾驶员', |
|
|
|
|
sort: 1 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1012, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20027, |
|
|
|
|
typeName: '小型-超视距驾驶员', |
|
|
|
|
sort: 2 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1014, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20028, |
|
|
|
|
typeName: '小型-教员', |
|
|
|
|
sort: 3 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1011, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20026, |
|
|
|
|
typeName: '中型-视距内驾驶员', |
|
|
|
|
sort: 5 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1013, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20027, |
|
|
|
|
typeName: '中型-超视距驾驶员', |
|
|
|
|
sort: 6 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1015, |
|
|
|
|
modelId: 10002, |
|
|
|
|
modelName: '固定翼', |
|
|
|
|
typeId: 20028, |
|
|
|
|
typeName: '中型-教员', |
|
|
|
|
sort: 7 |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
schoolDriverTypeVoList: [ |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1018, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20030, |
|
|
|
|
typeName: '小型-视距内驾驶员', |
|
|
|
|
sort: 1 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1020, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20031, |
|
|
|
|
typeName: '小型-超视距驾驶员', |
|
|
|
|
sort: 2 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1022, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20032, |
|
|
|
|
typeName: '小型-教员', |
|
|
|
|
sort: 3 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1019, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20030, |
|
|
|
|
typeName: '中型-视距内驾驶员', |
|
|
|
|
sort: 5 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1021, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20031, |
|
|
|
|
typeName: '中型-超视距驾驶员', |
|
|
|
|
sort: 6 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1023, |
|
|
|
|
modelId: 10003, |
|
|
|
|
modelName: '垂直起降', |
|
|
|
|
typeId: 20032, |
|
|
|
|
typeName: '中型-教员', |
|
|
|
|
sort: 7 |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
schoolDriverTypeVoList: [ |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1026, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20034, |
|
|
|
|
typeName: '小型-视距内驾驶员', |
|
|
|
|
sort: 1 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1028, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20035, |
|
|
|
|
typeName: '小型-超视距驾驶员', |
|
|
|
|
sort: 2 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1030, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20036, |
|
|
|
|
typeName: '小型-教员', |
|
|
|
|
sort: 3 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1027, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20034, |
|
|
|
|
typeName: '中型-视距内驾驶员', |
|
|
|
|
sort: 5 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1029, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20035, |
|
|
|
|
typeName: '中型-超视距驾驶员', |
|
|
|
|
sort: 6 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
schoolTypeId: 1031, |
|
|
|
|
modelId: 10004, |
|
|
|
|
modelName: '直升机', |
|
|
|
|
typeId: 20036, |
|
|
|
|
typeName: '中型-教员', |
|
|
|
|
sort: 7 |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
const goodOptions = ref([ |
|
|
|
|
{ label: '服务好', value: 1 }, |
|
|
|
|
{ label: '交通便利', value: 2 }, |
|
|
|
|
{ label: '提供住宿', value: 3 }, |
|
|
|
|
{ label: '免费接送', value: 4 } |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
const serviceOptions = ref([ |
|
|
|
|
{ label: '希望平台主动推荐学员', value: 1 }, |
|
|
|
|
{ label: '接受团购学员报名', value: 2 }, |
|
|
|
|
{ label: '希望平台推荐教员资源', value: 3 }, |
|
|
|
|
{ label: '希望平台推荐无人机相关的设备', value: 4 } |
|
|
|
|
]) |
|
|
|
|
const defaultTips = [ |
|
|
|
|
{ tag: '服务好', isDefault: true, checked: false }, |
|
|
|
|
{ tag: '交通便利', isDefault: true, checked: false }, |
|
|
|
|
{ tag: '提供住宿', isDefault: true, checked: false }, |
|
|
|
|
{ tag: '免费接送', isDefault: true, checked: false } |
|
|
|
|
] |
|
|
|
|
const defaultService = [ |
|
|
|
|
{ serviceName: '希望平台主动推荐学员', isDefault: true, checked: false }, |
|
|
|
|
{ serviceName: '接受团购学员报名', isDefault: true, checked: false }, |
|
|
|
|
{ serviceName: '希望平台推荐教员资源', isDefault: true, checked: false }, |
|
|
|
|
{ serviceName: '希望平台推荐无人机相关的设备', isDefault: true, checked: false } |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
|
handleQuery() |
|
|
|
|
// getCarTypeList().then((response) => { |
|
|
|
|
// driverOptions.value = response.map((item) => ({ |
|
|
|
|
// label: item.typeName, |
|
|
|
|
// value: item.id |
|
|
|
|
// })) |
|
|
|
|
// }) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
function handleQuery() { |
|
|
|
@ -300,8 +520,54 @@ function getList() { |
|
|
|
|
|
|
|
|
|
function handleDetail(row, type) { |
|
|
|
|
dialogType.value = type |
|
|
|
|
dialogVisible.value = true |
|
|
|
|
form.value = { ...row } |
|
|
|
|
stationDetail(row.schoolId).then((response) => { |
|
|
|
|
dialogVisible.value = true |
|
|
|
|
let arr = [] |
|
|
|
|
response.modelGroupVoList?.map((model) => { |
|
|
|
|
model.schoolModelVoList?.map((item) => { |
|
|
|
|
arr.push(item.schoolTypeId) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
const tags = [ |
|
|
|
|
...(response.schoolTagList?.map((it) => ({ ...it, checked: true })) || []), |
|
|
|
|
...defaultTips |
|
|
|
|
] |
|
|
|
|
const services = [ |
|
|
|
|
...(response.schoolServiceList?.map((it) => ({ ...it, checked: true })) || []), |
|
|
|
|
...defaultService |
|
|
|
|
] |
|
|
|
|
form.value = { |
|
|
|
|
...response, |
|
|
|
|
imgUrl: response.imgUrl ? response.imgUrl.split(',') : [], |
|
|
|
|
certs: response.certs ? response.certs.split(',') : [], |
|
|
|
|
modelList: driverOptions.value.map((item) => { |
|
|
|
|
return { |
|
|
|
|
modelId: item.modelId, |
|
|
|
|
modelName: item.modelName, |
|
|
|
|
schoolTypeList: item.schoolDriverTypeVoList.map((type) => { |
|
|
|
|
return { |
|
|
|
|
...type, |
|
|
|
|
checked: arr.includes(type.schoolTypeId) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
}), |
|
|
|
|
schoolTagList: uniqueByKey(tags, 'tag'), |
|
|
|
|
schoolServiceList: uniqueByKey(services, 'serviceName') |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function uniqueByKey(arr, key) { |
|
|
|
|
const map = new Map() |
|
|
|
|
return arr.filter((item) => { |
|
|
|
|
// 如果 map 中没有该 key,则保留并加入 map |
|
|
|
|
if (!map.has(item[key])) { |
|
|
|
|
map.set(item[key], true) |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
return false |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const formRef = ref(null) |
|
|
|
@ -313,7 +579,19 @@ async function submitForm() { |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
formLoading.value = true |
|
|
|
|
|
|
|
|
|
let params = { ...form.value } |
|
|
|
|
params.modelGroupVoList = params.modelList |
|
|
|
|
.map((item) => { |
|
|
|
|
return { |
|
|
|
|
modelId: item.modelId, |
|
|
|
|
modelName: item.modelName, |
|
|
|
|
schoolModelVoList: item.schoolTypeList.filter((type) => type.checked) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.filter((item) => item.schoolModelVoList.length > 0) |
|
|
|
|
params.schoolServiceList = params.schoolServiceList.filter((item) => item.checked) |
|
|
|
|
params.schoolTagList = params.schoolTagList.filter((item) => item.checked) |
|
|
|
|
if (dialogType.value == 'audit') { |
|
|
|
|
auditStation(params).then((response) => { |
|
|
|
|
if (response) { |
|
|
|
|