|
@@ -15,83 +15,116 @@
|
|
|
<el-col :span="24" class="two_2">
|
|
|
<el-form
|
|
|
label-position="top"
|
|
|
- ref="ruleFormRef"
|
|
|
+ ref="MatchRules"
|
|
|
:model="form"
|
|
|
:rules="rules"
|
|
|
label-width="80px"
|
|
|
class="form"
|
|
|
>
|
|
|
- <el-form-item label="需求名称" prop="name">
|
|
|
- <el-input v-model="form.name" placeholder="请输入需求名称"> </el-input>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="赛事名称" prop="name">
|
|
|
+ <el-input v-model="form.name" placeholder="请输入赛事名称"> </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="赛事类型" prop="type">
|
|
|
+ <el-select v-model="form.type" clearable placeholder="请选择赛事类型">
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in typeList"
|
|
|
+ :key="index"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="奖金(万元)" prop="money">
|
|
|
+ <el-input v-model="form.money" placeholder="请输入奖金(万元)"> </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="类别" prop="form">
|
|
|
+ <el-select v-model="form.form" clearable placeholder="请选择类别">
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in formList"
|
|
|
+ :key="index"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="有效期" prop="time">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="form.time"
|
|
|
+ type="daterange"
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始时间"
|
|
|
+ end-placeholder="结束时间"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="是否启用" prop="is_use">
|
|
|
+ <el-radio-group v-model="form.is_use">
|
|
|
+ <el-radio v-for="(item, index) in isUseList" :key="index" :value="item.value">{{
|
|
|
+ item.label
|
|
|
+ }}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item class="editor" label="大赛背景" prop="rules.rules1">
|
|
|
+ <WangEditor v-model="form.rules.rules1" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="行业领域" prop="field">
|
|
|
- <el-select v-model="form.field" width="100%" placeholder="请选择行业领域">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in fieldList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-form-item class="editor" label="大赛主题和目标" prop="rules.rules2">
|
|
|
+ <WangEditor v-model="form.rules.rules2" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="需求紧急度" prop="urgent">
|
|
|
- <el-select v-model="form.urgent" width="100%" placeholder="请选择需求紧急度">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in urgentList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-form-item class="editor" label="大赛基本情况介绍" prop="rules.rules3">
|
|
|
+ <WangEditor v-model="form.rules.rules3" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="合作方式" prop="method">
|
|
|
- <el-select v-model="form.method" width="100%" placeholder="请选择合作方式">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in methodList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-form-item class="editor" label="赛题任务" prop="rules.rules4">
|
|
|
+ <WangEditor v-model="form.rules.rules4" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="价格(万元)" prop="money">
|
|
|
- <el-input v-model="form.money" placeholder="请输入价格(万元)"> </el-input>
|
|
|
+ <el-form-item class="editor" label="赛程安排" prop="rules.rules5">
|
|
|
+ <WangEditor v-model="form.rules.rules5" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="需求地区" prop="area">
|
|
|
- <el-cascader
|
|
|
- v-model="form.area"
|
|
|
- :props="{ value: 'label', label: 'label' }"
|
|
|
- :options="cityList"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
+ <el-form-item class="editor" label="赛制阶段" prop="rules.rules6">
|
|
|
+ <WangEditor v-model="form.rules.rules6" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="有效期" prop="time">
|
|
|
- <el-date-picker
|
|
|
- v-model="form.time"
|
|
|
- type="daterange"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="结束时间"
|
|
|
- />
|
|
|
+ <el-form-item class="editor" label="参赛资格" prop="rules.rules7">
|
|
|
+ <WangEditor v-model="form.rules.rules7" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否启用" prop="is_use">
|
|
|
- <el-radio-group v-model="form.is_use">
|
|
|
- <el-radio v-for="(item, index) in isUseList" :key="index" :value="item.value">{{
|
|
|
- item.label
|
|
|
- }}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
+ <el-form-item class="editor" label="参赛报名" prop="rules.rules8">
|
|
|
+ <WangEditor v-model="form.rules.rules8" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="简介" prop="brief">
|
|
|
- <el-input
|
|
|
- v-model="form.brief"
|
|
|
- :autosize="{ minRows: 2, maxRows: 8 }"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入简介"
|
|
|
- />
|
|
|
+ <el-form-item class="editor" label="奖项设置与奖励办法" prop="rules.rules9">
|
|
|
+ <WangEditor v-model="form.rules.rules9" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="editor" label="组织单位" prop="rules.rules10">
|
|
|
+ <WangEditor v-model="form.rules.rules10" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="editor" label="赛事联络" prop="rules.rules11">
|
|
|
+ <WangEditor v-model="form.rules.rules11" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="editor" label="赛事交流" prop="rules.rules12">
|
|
|
+ <WangEditor v-model="form.rules.rules12" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="editor" label="常见问题" prop="brief">
|
|
|
+ <WangEditor v-model="form.brief" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-col :span="24" class="button">
|
|
|
- <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm(MatchRules)">保存</el-button>
|
|
|
</el-col>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -101,7 +134,6 @@
|
|
|
</template>
|
|
|
<script setup>
|
|
|
const $checkRes = inject('$checkRes')
|
|
|
-import { getCity } from '@/utils/city'
|
|
|
import { DictDataStore } from '@/store/api/system/dictData'
|
|
|
const dictDataStore = DictDataStore()
|
|
|
// 组件
|
|
@@ -109,32 +141,25 @@ import List from './parts/list.vue'
|
|
|
const form = inject('form')
|
|
|
const type = inject('type')
|
|
|
const toCommon = inject('toCommon')
|
|
|
-const ruleFormRef = inject('ruleFormRef')
|
|
|
+const MatchRules = ref()
|
|
|
const submitForm = inject('submitForm')
|
|
|
// 字典表
|
|
|
const isUseList = ref([])
|
|
|
const statusList = ref([])
|
|
|
-const methodList = ref([])
|
|
|
-const urgentList = ref([])
|
|
|
-const fieldList = ref([])
|
|
|
-const cityList = ref([])
|
|
|
-const demandList = ref([])
|
|
|
+const typeList = ref([])
|
|
|
+const matchList = ref([])
|
|
|
+const formList = ref([])
|
|
|
const rules = reactive({
|
|
|
- name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }],
|
|
|
- field: [{ required: true, message: '请选择行业领域', trigger: 'change' }],
|
|
|
- urgent: [{ required: true, message: '请选择需求紧急度', trigger: 'change' }],
|
|
|
- method: [{ required: true, message: '请选择合作方式', trigger: 'change' }],
|
|
|
- money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
|
|
|
- area: [{ required: true, message: '请选择需求地区', trigger: 'change' }],
|
|
|
- time: [{ required: true, message: '请选择起始时间', trigger: 'change' }],
|
|
|
+ name: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }],
|
|
|
+ type: [{ required: true, message: '请选择赛事类型', trigger: 'change' }],
|
|
|
+ form: [{ required: true, message: '请选择类别', trigger: 'change' }],
|
|
|
+ money: [{ required: true, message: '请输入奖金', trigger: 'blur' }],
|
|
|
+ time: [{ required: true, message: '请选择有效期', trigger: 'change' }],
|
|
|
is_use: [{ required: true, message: '请选择是否使用', trigger: 'change' }],
|
|
|
- brief: [{ required: true, message: '请输入简介', trigger: 'blur' }]
|
|
|
+ brief: [{ required: true, message: '请输入常见问题', trigger: 'blur' }]
|
|
|
})
|
|
|
// 请求
|
|
|
onMounted(async () => {
|
|
|
- getCity().then((response) => {
|
|
|
- cityList.value = response.address
|
|
|
- })
|
|
|
await searchOther()
|
|
|
})
|
|
|
const searchOther = async () => {
|
|
@@ -142,21 +167,18 @@ const searchOther = async () => {
|
|
|
// 是否使用
|
|
|
result = await dictDataStore.query({ code: 'isUse', is_use: '0' })
|
|
|
if ($checkRes(result)) isUseList.value = result.data
|
|
|
+ // 类型
|
|
|
+ result = await dictDataStore.query({ code: 'matchType', is_use: '0' })
|
|
|
+ if ($checkRes(result)) typeList.value = result.data
|
|
|
+ // 类别
|
|
|
+ result = await dictDataStore.query({ code: 'matchForm', is_use: '0' })
|
|
|
+ if ($checkRes(result)) formList.value = result.data
|
|
|
// 状态
|
|
|
result = await dictDataStore.query({ code: 'examStatus', is_use: '0' })
|
|
|
if ($checkRes(result)) statusList.value = result.data
|
|
|
- // 合作方式
|
|
|
- result = await dictDataStore.query({ code: 'method', is_use: '0' })
|
|
|
- if ($checkRes(result)) methodList.value = result.data
|
|
|
- // 需求紧急度
|
|
|
- result = await dictDataStore.query({ code: 'urgent', is_use: '0' })
|
|
|
- if ($checkRes(result)) urgentList.value = result.data
|
|
|
- // 技术领域
|
|
|
- result = await dictDataStore.query({ code: 'field', is_use: '0' })
|
|
|
- if ($checkRes(result)) fieldList.value = result.data
|
|
|
- // 需求状态
|
|
|
- result = await dictDataStore.query({ code: 'demandStatus', is_use: '0' })
|
|
|
- if ($checkRes(result)) demandList.value = result.data
|
|
|
+ // 赛事状态
|
|
|
+ result = await dictDataStore.query({ code: 'matchStatus', is_use: '0' })
|
|
|
+ if ($checkRes(result)) matchList.value = result.data
|
|
|
}
|
|
|
</script>
|
|
|
<style scoped lang="scss">
|
|
@@ -174,6 +196,11 @@ const searchOther = async () => {
|
|
|
text-align: right;
|
|
|
}
|
|
|
.two_2 {
|
|
|
+ .editor {
|
|
|
+ padding: 5px;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
.button {
|
|
|
text-align: center;
|
|
|
}
|