123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <template>
- <div class="index">
- <el-row>
- <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
- <custom-form v-model="form" :fields="formFields" :rules="rules" @save="toSave" @draftSave="toDraftSave">
- <template #is_use>
- <el-radio v-for="i in isUseList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>
- </template>
- <template #field>
- <el-option v-for="i in fieldList" :key="i.id" :label="i.label" :value="i.label"></el-option>
- </template>
- <template #industry>
- <el-option v-for="i in sectorList" :key="i.id" :label="i.title" :value="i.title"></el-option>
- </template>
- <template #urgent>
- <el-option v-for="i in urgentList" :key="i.id" :label="i.label" :value="i.value"></el-option>
- </template>
- <template #method>
- <el-option v-for="i in methodList" :key="i.id" :label="i.label" :value="i.value"></el-option>
- </template>
- <template #area>
- <el-cascader v-model="form.area" :props="{ value: 'name', label: 'name' }" :options="cityList" style="width: 100%" />
- </template>
- <template #tags>
- <el-select v-model="form.tags" multiple filterable allow-create default-first-option :reserve-keyword="false" placeholder="请选择标签" style="width: 100%">
- <el-option v-for="item in tagsList" :key="item.id" :label="item.title" :value="item.title" />
- </el-select>
- </template>
- </custom-form>
- </el-col>
- </el-row>
- </div>
- </template>
- <script setup>
- import { cloneDeep, get } from 'lodash-es'
- const $checkRes = inject('$checkRes')
- import { UserStore } from '@/store/user'
- const userStore = UserStore()
- const user = computed(() => userStore.user)
- // 接口
- import { DemandStore } from '@/store/api/platform/demand'
- import { DictDataStore } from '@/store/api/system/dictData'
- import { TagsStore } from '@/store/api/system/tags'
- import { SectorStore } from '@/store/api/platform/sector'
- import { RegionStore } from '@/store/api/system/region'
- const regionStore = RegionStore()
- const store = DemandStore()
- const dictDataStore = DictDataStore()
- const tagsStore = TagsStore()
- const sectorStore = SectorStore()
- // 加载中
- const loading = ref(false)
- // 字典表
- const isUseList = ref([])
- const statusList = ref([])
- const methodList = ref([])
- const urgentList = ref([])
- const fieldList = ref([])
- const cityList = ref([])
- const demandList = ref([])
- const tagsList = ref([])
- const sectorList = ref([])
- const form = ref({ time: [] })
- const formFields = ref([
- { label: '需求名称', model: 'name' },
- { label: '标签', model: 'tags', custom: true, mark: 'tags' },
- { label: '所属产业', model: 'industry', type: 'select' },
- { label: '行业领域', model: 'field' },
- { label: '需求紧急度', model: 'urgent', type: 'select', mark: 'dict', code: 'urgent' },
- { label: '合作方式', model: 'method', type: 'select', mark: 'dict', code: 'method' },
- { label: '价格(万元)', model: 'money' },
- { label: '所属企业', model: 'company' },
- { label: '企业简况', model: 'company_brief', type: 'textarea' },
- { label: '联系人', model: 'contacts' },
- { label: '联系电话', model: 'tel' },
- { label: '年份', model: 'year', type: 'year' },
- { label: '月份', model: 'month', type: 'month' },
- { label: '技术需求名称', model: 'tec_name' },
- { label: '待解决问题', model: 'question', type: 'textarea' },
- { label: '需求地区', model: 'area', custom: true, mark: 'area' },
- { label: '发布时间', model: 'time', type: 'daterange', mark: 'time' },
- { label: '是否公开', model: 'is_use', type: 'radio', mark: 'dict', code: 'isUse' },
- { label: '简介', model: 'brief', type: 'textarea' }
- ])
- const rules = reactive({ name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }] })
- // 请求
- onMounted(async () => {
- loading.value = true
- await searchOther()
- loading.value = false
- })
- const searchOther = async () => {
- let result
- // 是否使用
- result = await dictDataStore.query({ code: 'isUse', is_use: '0' })
- if ($checkRes(result)) isUseList.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 tagsStore.query({ is_use: '0' })
- if ($checkRes(result)) tagsList.value = result.data
- // 行业
- result = await sectorStore.query({ is_use: '0' })
- if ($checkRes(result)) sectorList.value = result.data
- // 城市
- result = await regionStore.area({ level: 'province', code: 22 })
- if ($checkRes(result)) cityList.value = result.data
- }
- const toSave = async () => {
- const data = cloneDeep(form.value)
- const other = { status: '0', user: user.value.id }
- if (data.time && data.time.length > 1) {
- data.start_time = data.time[0]
- data.end_time = data.time[1]
- }
- delete data.time
- let res
- if (get(data, 'id')) res = await store.update({ ...data, ...other })
- else res = await store.create({ ...data, ...other })
- if ($checkRes(res, true)) ElMessage({ message: `发布成功可以长历史发布查看`, type: 'success' })
- }
- const toDraftSave = async () => {
- const data = cloneDeep(form.value)
- const other = { status: '-2', user: user.value.id }
- if (data.time && data.time.length > 1) {
- data.start_time = data.time[0]
- data.end_time = data.time[1]
- }
- delete data.time
- let res
- if (get(data, 'id')) res = await store.update({ ...data, ...other })
- else res = await store.create({ ...data, ...other })
- if ($checkRes(res, true)) ElMessage({ message: `发布成功可以长历史发布查看`, type: 'success' })
- }
- </script>
- <style scoped lang="scss"></style>
|