Kaynağa Gözat

修改创新大赛

zs 1 yıl önce
ebeveyn
işleme
d1f7259d5e

+ 4 - 4
src/views/release/index.vue

@@ -52,7 +52,6 @@ const typeList = ref([
   { value: '1', label: '需求' }
 ])
 //
-const ruleFormRef = ref()
 const fields = ref([])
 // 列表
 const list = ref([])
@@ -145,7 +144,8 @@ const getTime = (data) => {
   else return '暂无'
 }
 const toCommon = (data) => {
-  form.value = {}
+  if (routeType.value == 'match') form.value = { rules: {} }
+  else form.value = {}
   type.value = data
 }
 // 查看
@@ -154,12 +154,13 @@ const toView = (item) => {
   if (routeType.value == 'achievement') path = '/achievement/detail'
   else if (routeType.value == 'demand') path = '/demand/detail'
   else if (routeType.value == 'project') path = '/project/detail'
-  else if (routeType.value == 'match') path = '/match/detail'
+  else if (routeType.value == 'match') path = '/innovation/detail'
   router.push({ path, query: { id: item.id || item._id } })
 }
 // 修改
 const toEdit = (item) => {
   form.value = item
+  console.log(item)
   type.value = '1'
 }
 // 保存
@@ -221,7 +222,6 @@ provide('form', form)
 provide('type', type)
 provide('toCommon', toCommon)
 provide('submitForm', submitForm)
-provide('ruleFormRef', ruleFormRef)
 provide('fields', fields)
 provide('list', list)
 provide('toView', toView)

+ 3 - 3
src/views/release/parts/achievement.vue

@@ -15,7 +15,7 @@
       <el-col :span="24" class="two_2">
         <el-form
           label-position="top"
-          ref="ruleFormRef"
+          ref="AchieveRules"
           :model="form"
           :rules="rules"
           label-width="80px"
@@ -115,7 +115,7 @@
           </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(AchieveRules)">保存</el-button>
             </el-col>
           </el-form-item>
         </el-form>
@@ -132,7 +132,7 @@ const dictDataStore = DictDataStore()
 import List from './parts/list.vue'
 const form = inject('form')
 const type = inject('type')
-const ruleFormRef = inject('ruleFormRef')
+const AchieveRules = ref()
 const toCommon = inject('toCommon')
 const submitForm = inject('submitForm')
 // 字典表

+ 3 - 3
src/views/release/parts/demand.vue

@@ -15,7 +15,7 @@
       <el-col :span="24" class="two_2">
         <el-form
           label-position="top"
-          ref="ruleFormRef"
+          ref="DemandRules"
           :model="form"
           :rules="rules"
           label-width="80px"
@@ -103,7 +103,7 @@
           </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(DemandRules)">保存</el-button>
             </el-col>
           </el-form-item>
         </el-form>
@@ -120,7 +120,7 @@ const dictDataStore = DictDataStore()
 import List from './parts/list.vue'
 const form = inject('form')
 const type = inject('type')
-const ruleFormRef = inject('ruleFormRef')
+const DemandRules = ref()
 const toCommon = inject('toCommon')
 const submitForm = inject('submitForm')
 // 字典表

+ 118 - 91
src/views/release/parts/match.vue

@@ -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;
     }

+ 3 - 3
src/views/release/parts/project.vue

@@ -15,7 +15,7 @@
       <el-col :span="24" class="two_2">
         <el-form
           label-position="top"
-          ref="ruleFormRef"
+          ref="ProjectRules"
           :model="form"
           :rules="rules"
           label-width="80px"
@@ -109,7 +109,7 @@
           </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(ProjectRules)">保存</el-button>
             </el-col>
           </el-form-item>
         </el-form>
@@ -126,7 +126,7 @@ const dictDataStore = DictDataStore()
 import List from './parts/list.vue'
 const form = inject('form')
 const type = inject('type')
-const ruleFormRef = inject('ruleFormRef')
+const ProjectRules = ref()
 const toCommon = inject('toCommon')
 const submitForm = inject('submitForm')
 // 字典表