|
|
@@ -27,14 +27,14 @@
|
|
|
<div>
|
|
|
<span class="color_required font_size16">*</span>
|
|
|
<span class="font_size16 bold">工作流类型</span>
|
|
|
- <span class="font_size14 gray999 ml20">选择最贴合的工作流分类</span>
|
|
|
+ <span class="font_size14 gray999 ml20">选择最贴合的工作流分类{{ruleForm.categoryId3}}</span>
|
|
|
</div>
|
|
|
<!-- 树形选择 -->
|
|
|
- <el-tree-select
|
|
|
- v-model="ruleForm.categoryId3"
|
|
|
- :data="categoryListTree"
|
|
|
- :render-after-expand="false"
|
|
|
+ <el-cascader
|
|
|
+ v-model="categoryIdList"
|
|
|
+ :options="categoryListTree"
|
|
|
placeholder="请选择工作流类型"
|
|
|
+ style="width:100%"
|
|
|
:props="{
|
|
|
label: 'categoryName',
|
|
|
value: 'categoryId',
|
|
|
@@ -76,7 +76,7 @@
|
|
|
<div class="mt10">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="">
|
|
|
+ <el-form-item label="" prop="budgetMin">
|
|
|
<div>
|
|
|
<span class="font_size16 bold">预算下限(元)</span>
|
|
|
<span class="font_size14 gray999 ml20">选填,有助于吸引合适的服务者</span>
|
|
|
@@ -85,7 +85,7 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="">
|
|
|
+ <el-form-item label="" prop="budgetMax">
|
|
|
<div>
|
|
|
<span class="font_size16 bold">预算上限(元)</span>
|
|
|
<span class="font_size14 gray999 ml20">选填,有助于吸引合适的服务者</span>
|
|
|
@@ -114,7 +114,7 @@
|
|
|
</div>
|
|
|
<div class="mt10">
|
|
|
<el-form-item label="手机号" prop="phone">
|
|
|
- <el-input v-model="ruleForm.phone" placeholder="请输入手机号" maxlength="11" type="number" />
|
|
|
+ <el-input v-model="ruleForm.phone" placeholder="请输入手机号" maxlength="11"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="微信">
|
|
|
<el-input v-model="ruleForm.wechat" placeholder="请输入微信号" maxlength="50"/>
|
|
|
@@ -190,7 +190,7 @@ import { useRouter, useRoute } from 'vue-router'
|
|
|
const router = useRouter()
|
|
|
const route = useRoute()
|
|
|
console.log(router,route)
|
|
|
-import { ref, computed, reactive, onMounted } from 'vue'
|
|
|
+import { ref, computed, reactive, onMounted, watchEffect } from 'vue'
|
|
|
import { useAppStore } from '@/pinia/appStore'
|
|
|
const appStore = useAppStore()
|
|
|
|
|
|
@@ -198,10 +198,15 @@ const appStore = useAppStore()
|
|
|
const query = route.query;
|
|
|
// 分类列表树
|
|
|
const categoryListTree = ref([]);
|
|
|
+// 选择的分类id列表
|
|
|
+const categoryIdList = ref([])
|
|
|
+
|
|
|
// 表单实例
|
|
|
const ruleFormRef = ref(null)
|
|
|
const ruleForm = reactive({
|
|
|
title: '',
|
|
|
+ categoryId1: '',
|
|
|
+ categoryId2: '',
|
|
|
categoryId3: '',
|
|
|
background: '',
|
|
|
requirements: '',
|
|
|
@@ -212,13 +217,19 @@ const ruleForm = reactive({
|
|
|
wechat: '',
|
|
|
email: '',
|
|
|
})
|
|
|
+watchEffect(() => {
|
|
|
+ // 将选择的分类id列表赋值给表单的categoryId1、categoryId2、categoryId3
|
|
|
+ ruleForm.categoryId1 = categoryIdList.value[0] || ''
|
|
|
+ ruleForm.categoryId2 = categoryIdList.value[1] || ''
|
|
|
+ ruleForm.categoryId3 = categoryIdList.value[2] || ''
|
|
|
+})
|
|
|
// 校验规则
|
|
|
const rules = reactive({
|
|
|
title: [
|
|
|
{ required: true, message: '请输入需求标题', trigger: 'blur' },
|
|
|
],
|
|
|
categoryId3: [
|
|
|
- { required: true, message: '请选择工作流类型', trigger: 'change' },
|
|
|
+ { required: true, message: '请选择工作流类型', trigger: 'blur' },
|
|
|
],
|
|
|
background: [
|
|
|
{ required: true, message: '请输入需求背景', trigger: 'blur' },
|
|
|
@@ -227,10 +238,12 @@ const rules = reactive({
|
|
|
{ required: true, message: '请输入具体要求', trigger: 'blur' },
|
|
|
],
|
|
|
budgetMin: [
|
|
|
- { required: true, message: '请输入预算下限', trigger: 'blur' },
|
|
|
+ // { required: true, message: '请输入预算下限', trigger: 'blur' },
|
|
|
+ { validator: (rule, value, callback) => /^\d+(\.\d{1,2})?$/.test(value), message: '请输入正确的预算下限(最多两位小数)', trigger: 'blur' },
|
|
|
],
|
|
|
budgetMax: [
|
|
|
- { required: true, message: '请输入预算上限', trigger: 'blur' },
|
|
|
+ // { required: true, message: '请输入预算上限', trigger: 'blur' },
|
|
|
+ { validator: (rule, value, callback) => /^\d+(\.\d{1,2})?$/.test(value), message: '请输入正确的预算上限(最多两位小数)', trigger: 'blur' },
|
|
|
],
|
|
|
deadline: [
|
|
|
{ required: true, message: '请选择报名截止时间', trigger: 'change' },
|