teamInfo_form.vue
5.19 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<template>
<el-dialog v-model="show" :title="title">
<div>
<el-form ref="formRef" :model="formData" label-width="110px" :rules="rules">
<el-form-item label="logo" required prop="imgUrl">
<ImageUpload2 v-model="formData.imgUrl" :limit="1" class="bili43" :crop-width="400" :crop-height="300" />
</el-form-item>
<el-form-item label="参赛队名称" required prop="name">
<el-input v-model="formData.name" placeholder="请输入参赛队名称" />
</el-form-item>
<el-form-item label="参赛队简称" required prop="abreviations">
<el-input v-model="formData.abreviations" placeholder="请输入参赛队简称" />
</el-form-item>
<el-form-item label="参赛队类型" required prop="type">
<el-select v-model="formData.type" class="m-2" placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.text"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item v-if="formData.type==3" label="企业性质" prop="ctype">-->
<!-- <el-select v-model="formData.ctype" placeholder="请选择企业性质" style="width: 100%;">-->
<!-- <el-option label="国资企业(含央企和本地)" value="0" />-->
<!-- <el-option label="外商投资企业" value="1" />-->
<!-- <el-option label="港澳台企业" value="2" />-->
<!-- <el-option label="民营企业" value="3" />-->
<!-- <el-option label="商会组织" value="4" />-->
<!-- <el-option label="其他" value="5" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="联系人" required prop="contactPerson">
<el-input v-model="formData.contactPerson" placeholder="请输入联系人姓名" />
</el-form-item>
<el-form-item label="联系方式" required prop="contactTelno">
<el-input v-model="formData.contactTelno" placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="所在地区" required prop="regionId">
<el-cascader
v-model="formData.regionId"
style="width: 100%;"
:options="regionsList"
:props="{ label:'text' }"
/>
</el-form-item>
<el-form-item label="详细地址" required prop="address">
<el-input v-model="formData.address" placeholder="请输入详细地址" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="dialog-footer" style="text-align: center;">
<el-button @click="show = false">取消</el-button>
<el-button type="primary" @click="saveGroup">
保存
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { reactive, toRefs, watch } from 'vue'
import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import _ from 'lodash'
const emit = defineEmits(['submitForm'])
const { proxy } = getCurrentInstance()
const data = reactive({
show: false,
title: '',
formData: {},
typeList: [
{ text: '俱乐部', value: '0' },
{ text: '事业单位', value: '1' },
{ text: '道馆', value: '2' },
{ text: '企业', value: '3' },
{ text: '机关', value: '4' },
{ text: '其他', value: '5' }
],
regionsList: [],
rules: {
imgUrl: [{ required: true, message: '必填' }],
name: [{ required: true, message: '必填', trigger: 'blur' }],
abreviations: [{ required: true, message: '必填', trigger: 'blur' }],
type: [{ required: true, message: '必填' }],
ctype: [{ required: true, message: '必填' }],
contactPerson: [{ required: true, message: '必填', trigger: 'blur' }],
contactTelno: [{ required: true, message: '必填', trigger: 'blur' }],
regionId: [{ required: true, message: '必填' }],
address: [{ required: true, message: '必填', trigger: 'blur' }]
}
})
const { show, title, formData, typeList, regionsList, rules } = toRefs(data)
onMounted(() => {
match.regionsList().then(res => {
regionsList.value = res.data
})
})
watch(show, (value) => {
if (!value) {
formData.value = {}
}
nextTick(() => {
proxy.$refs['formRef'].clearValidate()
})
})
const saveGroup = () => {
proxy.$refs['formRef'].validate((valid) => {
if (valid) {
if (typeof (formData.value.regionId) === 'object') {
formData.value.regionId = _.last(formData.value.regionId)
}
match.saveMyGroup(formData.value).then(res => {
// groupId.value = res.data
show.value = false
emit('submitForm')
})
}
})
}
const open = (params) => {
show.value = true
title.value = params.title || '编辑参赛队'
formData.value = _.cloneDeep(params.data || {})
}
defineExpose({
open
})
</script>
<style scoped lang="scss">
.bili43{
:deep(.fileItem) {
width: 200px;
height: 150px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 200px;
height: 150px;
}
}
</style>