|
@@ -14,7 +14,7 @@
|
|
</div>
|
|
</div>
|
|
<div class="content top_2">
|
|
<div class="content top_2">
|
|
<div class="title">
|
|
<div class="title">
|
|
- <span>行业领域</span>
|
|
|
|
|
|
+ <span>需求来源</span>
|
|
<p></p>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
<div class="boxnav">
|
|
<div class="boxnav">
|
|
@@ -23,7 +23,7 @@
|
|
</div>
|
|
</div>
|
|
<div class="content top_3">
|
|
<div class="content top_3">
|
|
<div class="title">
|
|
<div class="title">
|
|
- <span>所属产业</span>
|
|
|
|
|
|
+ <span>行业领域</span>
|
|
<p></p>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
<div class="boxnav">
|
|
<div class="boxnav">
|
|
@@ -34,7 +34,7 @@
|
|
<div class="bottom">
|
|
<div class="bottom">
|
|
<div class="content bottom_1">
|
|
<div class="content bottom_1">
|
|
<div class="title">
|
|
<div class="title">
|
|
- <span>审核情况</span>
|
|
|
|
|
|
+ <span>地区分布情况</span>
|
|
<p></p>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
<div class="boxnav">
|
|
<div class="boxnav">
|
|
@@ -43,16 +43,40 @@
|
|
</div>
|
|
</div>
|
|
<div class="content bottom_2">
|
|
<div class="content bottom_2">
|
|
<div class="title">
|
|
<div class="title">
|
|
- <span>年度获奖情况</span>
|
|
|
|
|
|
+ <span>需求列表</span>
|
|
<p></p>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
<div class="boxnav">
|
|
<div class="boxnav">
|
|
- <echarts5></echarts5>
|
|
|
|
|
|
+ <table class="table" width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
|
|
+ <tbody>
|
|
|
|
+ <tr>
|
|
|
|
+ <th>需求名称</th>
|
|
|
|
+ <th>地区</th>
|
|
|
|
+ <th>行业领域</th>
|
|
|
|
+ <th>状态</th>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr v-for="(item, index) in list" :key="index">
|
|
|
|
+ <td>{{ item.name || '暂无需求名称' }}</td>
|
|
|
|
+ <td>
|
|
|
|
+ <span class="text-w">{{ getArea(item.area) || '暂无' }}</span>
|
|
|
|
+ </td>
|
|
|
|
+ <td>
|
|
|
|
+ <span class="text-b">{{ item.field || '暂无' }}</span>
|
|
|
|
+ </td>
|
|
|
|
+ <td>
|
|
|
|
+ <div class="text-d">{{ getDict(item.status, 'status') || '暂无' }}</div>
|
|
|
|
+ </td>
|
|
|
|
+ </tr>
|
|
|
|
+ </tbody>
|
|
|
|
+ </table>
|
|
|
|
+ <div class="total">
|
|
|
|
+ <el-pagination background layout="prev, pager, next" :total="total" :page-size="limit" v-model:current-page="currentPage" @current-change="changePage" @size-change="sizeChange" />
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="content bottom_3">
|
|
<div class="content bottom_3">
|
|
<div class="title">
|
|
<div class="title">
|
|
- <span>行业领域</span>
|
|
|
|
|
|
+ <span>需求来源</span>
|
|
<p></p>
|
|
<p></p>
|
|
</div>
|
|
</div>
|
|
<div class="boxnav">
|
|
<div class="boxnav">
|
|
@@ -71,9 +95,71 @@ import echarts1 from './echarts/echarts1.vue'
|
|
import echarts2 from './echarts/echarts2.vue'
|
|
import echarts2 from './echarts/echarts2.vue'
|
|
import echarts3 from './echarts/echarts3.vue'
|
|
import echarts3 from './echarts/echarts3.vue'
|
|
import echarts4 from './echarts/echarts4.vue'
|
|
import echarts4 from './echarts/echarts4.vue'
|
|
-import echarts5 from './echarts/echarts5.vue'
|
|
|
|
import echarts6 from './echarts/echarts6.vue'
|
|
import echarts6 from './echarts/echarts6.vue'
|
|
provide('type', 'demand')
|
|
provide('type', 'demand')
|
|
|
|
+import { get } from 'lodash-es'
|
|
|
|
+// 需求
|
|
|
|
+import { DemandStore } from '@/store/api/platform/demand'
|
|
|
|
+import { DictDataStore } from '@/store/api/system/dictData'
|
|
|
|
+const dictDataStore = DictDataStore()
|
|
|
|
+const store = DemandStore()
|
|
|
|
+const $checkRes = inject('$checkRes')
|
|
|
|
+// 列表
|
|
|
|
+const list = ref([])
|
|
|
|
+let skip = 0
|
|
|
|
+let limit = 5
|
|
|
|
+const total = ref(0)
|
|
|
|
+const currentPage = ref(1)
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ await searchOther()
|
|
|
|
+ await search({ skip, limit })
|
|
|
|
+})
|
|
|
|
+// #region 字典表
|
|
|
|
+const examStatusList = ref([])
|
|
|
|
+const searchOther = async () => {
|
|
|
|
+ let result
|
|
|
|
+ result = await dictDataStore.query({ code: 'examStatus', is_use: '0' })
|
|
|
|
+ if ($checkRes(result)) examStatusList.value = result.data
|
|
|
|
+ result = await dictDataStore.query({ code: 'isUse', is_use: '0' })
|
|
|
|
+}
|
|
|
|
+const search = async (query = { skip, limit }) => {
|
|
|
|
+ const nq = { skip: get(query, 'skip'), limit: get(query, 'limit') }
|
|
|
|
+ const res = await store.query(nq)
|
|
|
|
+ if ($checkRes(res)) {
|
|
|
|
+ list.value = get(res, 'data', [])
|
|
|
|
+ total.value = get(res, 'total', 0)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+// 地区
|
|
|
|
+const getArea = (data) => {
|
|
|
|
+ if (data) return data.join('-')
|
|
|
|
+ else return '暂无地区'
|
|
|
|
+}
|
|
|
|
+// 字典表
|
|
|
|
+const getDict = (data, type) => {
|
|
|
|
+ let list
|
|
|
|
+ let result
|
|
|
|
+ switch (type) {
|
|
|
|
+ case 'status':
|
|
|
|
+ list = examStatusList.value
|
|
|
|
+ break
|
|
|
|
+ default:
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ if (!list) return result
|
|
|
|
+ const i = list.find((f) => f.value === data)
|
|
|
|
+ if (!i) return result
|
|
|
|
+ return get(i, 'label')
|
|
|
|
+}
|
|
|
|
+// 分页
|
|
|
|
+const changePage = (page = currentPage.value) => {
|
|
|
|
+ search({ skip: (page - 1) * limit, limit: limit })
|
|
|
|
+}
|
|
|
|
+const sizeChange = (limits) => {
|
|
|
|
+ limit = limits
|
|
|
|
+ currentPage.value = 1
|
|
|
|
+ search({ skip: 0, limit: limit })
|
|
|
|
+}
|
|
</script>
|
|
</script>
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
.main {
|
|
.main {
|
|
@@ -156,7 +242,73 @@ provide('type', 'demand')
|
|
opacity: 0.5;
|
|
opacity: 0.5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ .boxnav {
|
|
|
|
+ .table {
|
|
|
|
+ height: 26vh;
|
|
|
|
+ .name {
|
|
|
|
+ max-width: 200px;
|
|
|
|
+ }
|
|
|
|
+ th {
|
|
|
|
+ border-bottom: 1px solid #407abd;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ padding: 6px 0;
|
|
|
|
+ color: rgba(255, 255, 255, 0.8);
|
|
|
|
+ }
|
|
|
|
+ td {
|
|
|
|
+ border-bottom: 1px dotted#407abd;
|
|
|
|
+ font-size: 12px;
|
|
|
|
+ padding: 6px 0;
|
|
|
|
+ text-align: center;
|
|
|
|
+ color: rgba(255, 255, 255, 0.6);
|
|
|
|
+ }
|
|
|
|
+ tr:last-child td {
|
|
|
|
+ border: none;
|
|
|
|
+ }
|
|
|
|
+ .text-w {
|
|
|
|
+ color: #ffe400;
|
|
|
|
+ }
|
|
|
|
+ .text-d {
|
|
|
|
+ color: #ff6316;
|
|
|
|
+ }
|
|
|
|
+ .text-s {
|
|
|
|
+ color: #14e144;
|
|
|
|
+ }
|
|
|
|
+ .text-b {
|
|
|
|
+ color: #07e5ff;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .total {
|
|
|
|
+ margin: 5px 0 0 0;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+:deep(.el-pagination.is-background .btn-prev:disabled) {
|
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
|
|
+:deep(.el-pagination.is-background .btn-next:disabled) {
|
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
|
|
+:deep(.el-pagination.is-background .btn-prev) {
|
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
|
|
+:deep(.el-pagination.is-background .btn-next) {
|
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
|
|
+:deep(.el-pagination.is-background .el-pager li.is-active) {
|
|
|
|
+ background-color: #4d5b87 !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
|
|
+:deep(.el-pagination.is-background .el-pager li) {
|
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
|
+ color: #ffffff !important;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|