zs vor 6 Monaten
Ursprung
Commit
48c32dab21

+ 15 - 2
src/views/center/achievement.vue

@@ -221,7 +221,20 @@ const formFields = ref([
   { label: '简介', model: 'brief', type: 'textarea' },
   { label: '附件', model: 'file', custom: true, mark: 'file' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入成果名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入成果名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  attribute: [{ required: true, message: '请选择属性', trigger: 'blur' }],
+  mature: [{ required: true, message: '请选择成熟度', trigger: 'blur' }],
+  sell: [{ required: true, message: '请选择出让方式', trigger: 'blur' }],
+  technology: [{ required: true, message: '请选择技术分类', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择成果地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  source: [{ required: true, message: '请输入项目来源', trigger: 'blur' }],
+  person: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }]
+})
 // 导出文件
 const checkAll = ref(false)
 const checkedExport = ref([])
@@ -516,7 +529,7 @@ const sizeChange = (limits) => {
 </script>
 <style scoped lang="scss">
 .main {
-  height:85vh;
+  height: 85vh;
   .one {
     height: 50px;
     display: flex;

+ 12 - 6
src/views/center/demand.vue

@@ -230,7 +230,18 @@ const formFields = ref([
   { label: '是否公开', model: 'is_use', type: 'radio', mark: 'dict', code: 'isUse' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  urgent: [{ required: true, message: '请选择需求紧急度', trigger: 'blur' }],
+  method: [{ required: true, message: '请选择合作方式', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  company: [{ required: true, message: '请输入所属企业', trigger: 'blur' }],
+  contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择需求地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }]
+})
 // 导出文件
 const checkAll = ref(false)
 const checkedExport = ref([])
@@ -430,11 +441,6 @@ const checkedExportChange = (value) => {
 const toExpert = () => {
   dialog.value = { type: '4', show: true, title: '导入数据' }
 }
-// 导出数据
-const toDownload = () => {
-  dialog.value = { type: '3', show: true, title: '导出数据' }
-}
-
 // 下载导入模板
 const toTemplate = () => {
   importActive.value = importActive.value + 1

+ 9 - 1
src/views/center/footplate.vue

@@ -115,7 +115,15 @@ const formFields = ref([
   { label: '是否启用', model: 'is_use', type: 'radio' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }],
+  build: [{ required: true, message: '请输入建设主体', trigger: 'blur' }],
+  operate: [{ required: true, message: '请输入运营主体', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入服务产业领域', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择所在地区', trigger: 'blur' }],
+  contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }]
+})
 // 请求
 onMounted(async () => {
   loading.value = true

+ 7 - 1
src/views/center/match.vue

@@ -245,7 +245,13 @@ const formFields = ref([
 ])
 const matchFields = ref([{ label: '赛事状态', model: 'match_status', type: 'select' }])
 const matchRules = reactive({ match_status: [{ required: true, message: '请选择赛事状态', trigger: 'blur' }] })
-const rules = reactive({ name: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }], form: [{ required: true, message: '请选择类别', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }],
+  form: [{ required: true, message: '请选择类别', trigger: 'blur' }],
+  scale: [{ required: true, message: '请选择赛事规模', trigger: 'blur' }],
+  match_type: [{ required: true, message: '请选择赛事类型', trigger: 'blur' }],
+  work: [{ required: true, message: '请输入组织单位', trigger: 'blur' }]
+})
 // 赛事规则
 const rulesFields = ref([
   { label: '大赛背景', model: 'rules1', custom: true },

+ 13 - 1
src/views/center/project.vue

@@ -237,7 +237,19 @@ const formFields = ref([
   { label: '简介', model: 'brief', type: 'textarea' },
   { label: '附件', model: 'file', custom: true }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
+  type: [{ required: true, message: '请选择行业分类', trigger: 'blur' }],
+  maturity: [{ required: true, message: '请选择成熟度', trigger: 'blur' }],
+  skill: [{ required: true, message: '请选择技术类型', trigger: 'blur' }],
+  field: [{ required: true, message: '请选择行业领域', trigger: 'blur' }],
+  cooperate: [{ required: true, message: '请选择合作类型', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择项目地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }],
+  main: [{ required: true, message: '请输入项目主体', trigger: 'blur' }],
+  progress: [{ required: true, message: '请输入项目进展', trigger: 'blur' }],
+  source: [{ required: true, message: '请输入项目来源', trigger: 'blur' }]
+})
 // 导出文件
 const checkAll = ref(false)
 const checkedExport = ref([])

+ 10 - 2
src/views/center/supply.vue

@@ -210,7 +210,15 @@ const formFields = ref([
   { label: '是否公开', model: 'is_use', type: 'radio', mark: 'dict', code: 'isUse' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入供给名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入供给名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  urgent: [{ required: true, message: '请选择供给紧急度', trigger: 'blur' }],
+  method: [{ required: true, message: '请选择合作方式', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择供给地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }]
+})
 // 导出文件
 const checkAll = ref(false)
 const checkedExport = ref([])
@@ -460,7 +468,7 @@ const sizeChange = (limits) => {
 </script>
 <style scoped lang="scss">
 .main {
-  height:85vh;
+  height: 85vh;
   .one {
     height: 50px;
     display: flex;

+ 0 - 221
src/views/thirteen/index copy.vue

@@ -1,221 +0,0 @@
-<template>
-  <custom-layout class="main">
-    <el-col :span="24" class="one">
-      <el-image class="image" :src="news" fit="fill" />
-    </el-col>
-    <el-col :span="24" class="two">
-      <div class="w_1300 flex">
-        <div class="flexList" @mouseover="handleMouseOver(index)" v-for="(item, index) in list" :key="index">
-          <div class="two_1" :class="['list' + index]" v-if="is_show != index">
-            <h5 class="title">{{ item.name || '暂无标题' }}</h5>
-            <div class="brief textOne">{{ item.brief || '暂无简介' }}</div>
-          </div>
-          <div class="two_2" :class="['image' + index]" v-else>
-            <div class="other_1">
-              <div class="title">{{ item.name || '暂无标题' }}</div>
-              <div class="more" @click="toView(item)">查看更多>></div>
-            </div>
-            <div class="other_2 textMore">
-              {{ item.brief || '暂无简介' }}
-            </div>
-            <div class="other_3">
-              <div class="other_list" v-for="(tag, indexs) in item.list" :key="indexs">
-                <el-image class="image" :src="getUrl(tag.file)" fit="fill" />
-                <div class="title textOne">{{ tag.name || '暂无标题' }}</div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </el-col>
-  </custom-layout>
-</template>
-
-<script setup>
-// 图片引入
-import news from '/images/news.png'
-// 接口
-import { JournalStore } from '@/store/api/platform/journal'
-import { NotesStore } from '@/store/api/platform/notes'
-const store = JournalStore()
-const notesStore = NotesStore()
-// 路由
-const router = useRouter()
-// 加载中
-const loading = ref(false)
-const list = ref([])
-let skip = 0
-let limit = 8
-const total = ref(0)
-const is_show = ref(0)
-// 请求
-onMounted(async () => {
-  loading.value = true
-  await search({ skip, limit })
-  loading.value = false
-})
-const search = async (query = { skip, limit }) => {
-  skip = query.skip
-  limit = query.limit
-  const info = { skip: query.skip, limit: query.limit, status: '1', is_use: '0' }
-  const res = await store.query(info)
-  if (res.errcode == '0') {
-    const data = { skip: 0, limit: 3, status: '1', is_use: '0' }
-    for (const val of res.data) {
-      data.journal = val.id
-      const arr = await notesStore.query(data)
-      if (arr.errcode == '0') val.list = arr.data
-    }
-    list.value = res.data
-    total.value = res.total
-  }
-}
-// 查看详情
-const toView = async (item) => {
-  router.push({ path: '/thirteen/list', query: { id: item.id || item._id } })
-}
-const getUrl = (item) => {
-  if (item && item.length > 0) return `${import.meta.env.VITE_APP_HOST}${item[0].uri}`
-}
-const handleMouseOver = (index) => {
-  is_show.value = index
-}
-</script>
-<style scoped lang="scss">
-.main {
-  .one {
-    .image {
-      width: 100%;
-      height: 200px;
-    }
-  }
-
-  .two {
-    margin: 10px 0;
-    .flex {
-      display: flex;
-      justify-content: space-around;
-      .flexList {
-        .two_1 {
-          margin: 0 5px 0 0;
-          width: 200px;
-          height: 480px;
-          text-align: center;
-          background-size: cover;
-          display: flex;
-          flex-direction: column;
-          justify-content: center;
-          align-items: center;
-          .title {
-            margin-top: 58px;
-            font-size: $global-font-size-18;
-            color: #121834;
-            text-align: center;
-            line-height: 28px;
-            font-weight: 600;
-            margin: 0 0 10px 0;
-          }
-          .brief {
-            width: 80%;
-            padding: 10px 0 0 0;
-            margin: 0 10px;
-            font-family: PingFangSC-Regular;
-            font-size: $global-font-size-14;
-            color: #121834;
-            line-height: 19px;
-            font-weight: 400;
-            border-top: 0.5px dashed #909090;
-          }
-        }
-        .two_2 {
-          width: 850px;
-          height: 480px;
-          color: #fff;
-          border-radius: 2px;
-          padding: 0 40px 20px;
-          animation: box1 0.4s ease;
-          background-repeat: no-repeat;
-          .other_1 {
-            display: flex;
-            justify-content: space-between;
-            margin-bottom: 8px;
-            padding: 40px 0 20px 0;
-            cursor: pointer;
-            .title {
-              font-size: 26px;
-              color: #fff;
-              text-align: left;
-              line-height: 26px;
-              font-weight: 600;
-            }
-            .more {
-              font-family: PingFangSC-Medium;
-              font-size: $global-font-size-14;
-              color: #fff;
-              line-height: 21px;
-              font-weight: 500;
-              cursor: pointer;
-            }
-          }
-          .other_2 {
-            font-size: $global-font-size-14;
-            color: #fff;
-            line-height: 19px;
-            font-weight: 200;
-          }
-          .other_3 {
-            margin: 40px 0 0 0;
-            display: flex;
-            justify-content: space-between;
-            .other_list {
-              cursor: pointer;
-              width: 200px;
-              .image {
-                width: 100%;
-                height: 250px;
-              }
-              .title {
-                margin: 10px 0 0 0;
-                font-size: $global-font-size-18;
-                color: #fff;
-                text-align: center;
-                line-height: 26px;
-                font-weight: 500;
-              }
-            }
-          }
-        }
-        @keyframes box1 {
-          0% {
-            opacity: 0.8;
-            transform: scale(0.8);
-          }
-          100% {
-            opacity: 1;
-            transform: scale(1);
-          }
-        }
-
-        .list0 {
-          background: url(/images/cata1.png) no-repeat center;
-        }
-        .list1 {
-          background: url(/images/cata2.png) no-repeat center;
-        }
-        .list2 {
-          background: url(/images/cata3.png) no-repeat center;
-        }
-        .image0 {
-          background: url(/images/service_top_bg.png) no-repeat center;
-        }
-        .image1 {
-          background: url(/images/service_center_bg.png) center;
-        }
-        .image2 {
-          background: url(/images/service_bottom_bg.png) no-repeat center;
-        }
-      }
-    }
-  }
-}
-</style>

+ 6 - 1
src/views/thirteen/index.vue

@@ -43,6 +43,9 @@
 <script setup>
 // // 图片引入
 // import oneUrl from '/images/one.jpeg'
+import { UserStore } from '@/store/user'
+const userStore = UserStore()
+const user = computed(() => userStore.user)
 // 接口
 import { NotesStore } from '@/store/api/platform/notes'
 const store = NotesStore()
@@ -77,7 +80,9 @@ const search = async (query = { skip, limit }) => {
 }
 // 查看详情
 const toView = async (item) => {
-  router.push({ path: '/study/detail', query: { id: item.id || item._id } })
+  if (user.value.id) {
+    router.push({ path: '/study/detail', query: { id: item.id || item._id } })
+  } else ElMessage({ message: '未登录!', type: 'error' })
 }
 const getfile = (item) => {
   if (item && item.length > 0) return `${import.meta.env.VITE_APP_HOST}${item[0].uri}`

+ 0 - 9
src/views/thr/index.vue

@@ -1,9 +0,0 @@
-<template>
-  <custom-layout class="main"> 创新中心 </custom-layout>
-</template>
-
-<script setup></script>
-<style scoped lang="scss">
-.main {
-}
-</style>

+ 14 - 1
src/views/two/add/achievement.vue

@@ -134,7 +134,20 @@ const formFields = ref([
   { label: '附件', model: 'file', custom: true, mark: 'file' }
 ])
 const form = ref({ file: [] })
-const rules = reactive({ name: [{ required: true, message: '请输入成果名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入成果名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  attribute: [{ required: true, message: '请选择属性', trigger: 'blur' }],
+  mature: [{ required: true, message: '请选择成熟度', trigger: 'blur' }],
+  sell: [{ required: true, message: '请选择出让方式', trigger: 'blur' }],
+  technology: [{ required: true, message: '请选择技术分类', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择成果地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  source: [{ required: true, message: '请输入项目来源', trigger: 'blur' }],
+  person: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }]
+})
 // 加载中
 const isLoading = ref(false)
 const svg = ref(`

+ 12 - 1
src/views/two/add/demand.vue

@@ -123,7 +123,18 @@ const formFields = ref([
   { label: '是否公开', model: 'is_use', type: 'radio', mark: 'dict', code: 'isUse' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  urgent: [{ required: true, message: '请选择需求紧急度', trigger: 'blur' }],
+  method: [{ required: true, message: '请选择合作方式', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  company: [{ required: true, message: '请输入所属企业', trigger: 'blur' }],
+  contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择需求地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }]
+})
 
 // 推荐供给列表
 const supplyList = ref([])

+ 9 - 1
src/views/two/add/footplate.vue

@@ -69,7 +69,15 @@ const formFields = ref([
   { label: '是否启用', model: 'is_use', type: 'radio' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }],
+  build: [{ required: true, message: '请输入建设主体', trigger: 'blur' }],
+  operate: [{ required: true, message: '请输入运营主体', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入服务产业领域', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择所在地区', trigger: 'blur' }],
+  contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+  phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }]
+})
 // 请求
 onMounted(async () => {
   loading.value = true

+ 7 - 1
src/views/two/add/match.vue

@@ -187,7 +187,13 @@ const rulesFields = ref([
   { label: '赛事联络', model: 'rules11', custom: true },
   { label: '赛事交流', model: 'rules12', custom: true }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }], form: [{ required: true, message: '请选择类别', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }],
+  form: [{ required: true, message: '请选择类别', trigger: 'blur' }],
+  scale: [{ required: true, message: '请选择赛事规模', trigger: 'blur' }],
+  match_type: [{ required: true, message: '请选择赛事类型', trigger: 'blur' }],
+  work: [{ required: true, message: '请输入组织单位', trigger: 'blur' }]
+})
 // 请求
 onMounted(async () => {
   loading.value = true

+ 13 - 1
src/views/two/add/project.vue

@@ -92,7 +92,19 @@ const formFields = ref([
   { label: '简介', model: 'brief', type: 'textarea' },
   { label: '附件', model: 'file', custom: true }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
+  type: [{ required: true, message: '请选择行业分类', trigger: 'blur' }],
+  maturity: [{ required: true, message: '请选择成熟度', trigger: 'blur' }],
+  skill: [{ required: true, message: '请选择技术类型', trigger: 'blur' }],
+  field: [{ required: true, message: '请选择行业领域', trigger: 'blur' }],
+  cooperate: [{ required: true, message: '请选择合作类型', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择项目地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }],
+  main: [{ required: true, message: '请输入项目主体', trigger: 'blur' }],
+  progress: [{ required: true, message: '请输入项目进展', trigger: 'blur' }],
+  source: [{ required: true, message: '请输入项目来源', trigger: 'blur' }]
+})
 // 请求
 onMounted(async () => {
   loading.value = true

+ 9 - 1
src/views/two/add/supply.vue

@@ -117,7 +117,15 @@ const formFields = ref([
   { label: '是否公开', model: 'is_use', type: 'radio', mark: 'dict', code: 'isUse' },
   { label: '简介', model: 'brief', type: 'textarea' }
 ])
-const rules = reactive({ name: [{ required: true, message: '请输入供给名称', trigger: 'blur' }] })
+const rules = reactive({
+  name: [{ required: true, message: '请输入供给名称', trigger: 'blur' }],
+  field: [{ required: true, message: '请输入行业领域', trigger: 'blur' }],
+  urgent: [{ required: true, message: '请选择供给紧急度', trigger: 'blur' }],
+  method: [{ required: true, message: '请选择合作方式', trigger: 'blur' }],
+  money: [{ required: true, message: '请输入价格', trigger: 'blur' }],
+  area: [{ required: true, message: '请选择供给地区', trigger: 'blur' }],
+  time: [{ required: true, message: '请选择发布时间', trigger: 'blur' }]
+})
 // 加载中
 const isLoading = ref(false)
 const svg = ref(`