|
@@ -1,13 +1,37 @@
|
|
<script setup name="DataEDBAddBaseEDB">
|
|
<script setup name="DataEDBAddBaseEDB">
|
|
import {ref} from 'vue'
|
|
import {ref} from 'vue'
|
|
-import {baseEDBSourceOpts} from './util/config'
|
|
|
|
|
|
+import apiDataEDB from '@/api/dataEDB'
|
|
|
|
+import { showToast } from 'vant'
|
|
|
|
+import EditBaseEDB from './components/EditBaseEDB.vue'
|
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
|
+
|
|
|
|
+const router=useRouter()
|
|
|
|
+
|
|
|
|
+//显示目录
|
|
|
|
+function getClassifyName(data){
|
|
|
|
+ const arr=data||[]
|
|
|
|
+ let str=''
|
|
|
|
+ arr.reverse().map((item) => str += item.ClassifyName + '/')
|
|
|
|
+ return str
|
|
|
|
+}
|
|
|
|
|
|
// 数据来源
|
|
// 数据来源
|
|
-const dataSourceOpts=baseEDBSourceOpts.map(item=>{return{text:item,value:item}})
|
|
|
|
const showSelectDataSource=ref(false)
|
|
const showSelectDataSource=ref(false)
|
|
-const dataSource=ref('wind')
|
|
|
|
|
|
+const edbSourceOpts=ref([])
|
|
|
|
+const dataSourceText=ref('')
|
|
|
|
+const dataSourceVal=ref(0)
|
|
|
|
+async function getEDBSourceOpts(){
|
|
|
|
+ const res=await apiDataEDB.getEDBSourceOpts({IsBase:1})
|
|
|
|
+ if(res.Ret===200){
|
|
|
|
+ edbSourceOpts.value=res.Data||[]
|
|
|
|
+ dataSourceText.value=edbSourceOpts.value[0]?.SourceName
|
|
|
|
+ dataSourceVal.value=edbSourceOpts.value[0]?.EdbSourceId
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+getEDBSourceOpts()
|
|
function onConfirmDataSource(e){
|
|
function onConfirmDataSource(e){
|
|
- dataSource.value=e.selectedValues[0]
|
|
|
|
|
|
+ dataSourceText.value=e.selectedOptions[0].text
|
|
|
|
+ dataSourceVal.value=e.selectedOptions[0].value
|
|
showSelectDataSource.value=false
|
|
showSelectDataSource.value=false
|
|
}
|
|
}
|
|
|
|
|
|
@@ -16,8 +40,68 @@ const searchEDBTxt=ref('')
|
|
// 公司ID
|
|
// 公司ID
|
|
const searchCompanyTxt=ref('')
|
|
const searchCompanyTxt=ref('')
|
|
|
|
|
|
|
|
+// 搜索指标
|
|
|
|
+const result=ref(null)
|
|
|
|
+async function getEDBInfo(){
|
|
|
|
+ const res=await apiDataEDB.edbSearch({
|
|
|
|
+ Source:dataSourceVal.value,
|
|
|
|
+ EdbCode:searchEDBTxt.value,
|
|
|
|
+ CompanyCode:searchCompanyTxt.value
|
|
|
|
+ })
|
|
|
|
+ if(res.Ret===200){
|
|
|
|
+ result.value=res.Data
|
|
|
|
+ }else{
|
|
|
|
+ result.value=null
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function onSearch(){
|
|
|
|
+ if(!searchEDBTxt.value){
|
|
|
|
+ showToast('请输入指标ID')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if(dataSourceText.value==='彭博财务'&&!searchCompanyTxt.value){
|
|
|
|
+ showToast('请输入公司ID')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ getEDBInfo()
|
|
|
|
+}
|
|
|
|
|
|
|
|
+// 下一步指标基本信息填写
|
|
|
|
+const showEditBaseEDB=ref(false)
|
|
|
|
+const baseInfo=ref({})
|
|
|
|
+function handleShowEditBaseEDB(){
|
|
|
|
+ let obj={
|
|
|
|
+ EdbCode: result.value.SearchItem.EdbCode,
|
|
|
|
+ EndDate: result.value.SearchItem.EndDate,
|
|
|
|
+ StartDate: result.value.SearchItem.StartDate,
|
|
|
|
+ Source: dataSourceVal.value,
|
|
|
|
+ }
|
|
|
|
+ //隆众指标和手工指标、交易所等将名称 频度 单位带到下一步
|
|
|
|
+ if([9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 26,38,41,57,60,71].includes(dataSourceVal.value)){
|
|
|
|
+ obj={
|
|
|
|
+ ...obj,
|
|
|
|
+ edb_name: result.value.SearchItem.EdbName,
|
|
|
|
+ unit: result.value.SearchItem.Unit,
|
|
|
|
+ frequency: result.value.SearchItem.Frequency,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ baseInfo.value=obj
|
|
|
|
+ showEditBaseEDB.value=true
|
|
|
|
+}
|
|
|
|
+function handleEditBaseEdbSuccess(){
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ router.back()
|
|
|
|
+ }, 1500);
|
|
|
|
+}
|
|
|
|
|
|
|
|
+//清空状态
|
|
|
|
+function handleClearPage(){
|
|
|
|
+ searchEDBTxt.value=''
|
|
|
|
+ searchCompanyTxt.value=''
|
|
|
|
+ result.value=null
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -26,7 +110,7 @@ const searchCompanyTxt=ref('')
|
|
|
|
|
|
<template>
|
|
<template>
|
|
<div class="add-baseEDB-page">
|
|
<div class="add-baseEDB-page">
|
|
- <van-cell title="数据来源" is-link :value="dataSource" @click="showSelectDataSource=true"/>
|
|
|
|
|
|
+ <van-cell title="数据来源" is-link :value="dataSourceText" @click="showSelectDataSource=true"/>
|
|
<div class="search-box">
|
|
<div class="search-box">
|
|
<van-search
|
|
<van-search
|
|
v-model="searchEDBTxt"
|
|
v-model="searchEDBTxt"
|
|
@@ -36,11 +120,11 @@ const searchCompanyTxt=ref('')
|
|
@search="onSearch"
|
|
@search="onSearch"
|
|
>
|
|
>
|
|
<template #action>
|
|
<template #action>
|
|
- <span class="right-btn">查询</span>
|
|
|
|
|
|
+ <span class="right-btn" @click="onSearch">查询</span>
|
|
</template>
|
|
</template>
|
|
</van-search>
|
|
</van-search>
|
|
</div>
|
|
</div>
|
|
- <div class="search-box" style="padding-top:0" v-show="dataSource==='彭博财务'">
|
|
|
|
|
|
+ <div class="search-box" style="padding-top:0" v-if="dataSourceText==='彭博财务'">
|
|
<van-search
|
|
<van-search
|
|
v-model="searchCompanyTxt"
|
|
v-model="searchCompanyTxt"
|
|
show-action
|
|
show-action
|
|
@@ -49,19 +133,50 @@ const searchCompanyTxt=ref('')
|
|
@search="onSearch"
|
|
@search="onSearch"
|
|
>
|
|
>
|
|
<template #action>
|
|
<template #action>
|
|
- <span class="right-btn">查询</span>
|
|
|
|
|
|
+ <span class="right-btn" @click="onSearch">查询</span>
|
|
</template>
|
|
</template>
|
|
</van-search>
|
|
</van-search>
|
|
</div>
|
|
</div>
|
|
- <van-cell title="指标ID" :value="dataSource" />
|
|
|
|
- <van-cell title="起始时间" :value="dataSource" />
|
|
|
|
- <van-cell title="终止时间" :value="dataSource" />
|
|
|
|
- <ul class="data-value-wrap">
|
|
|
|
- <li class="item" style="font-weight:bold">时间</li>
|
|
|
|
- <li class="item" style="font-weight:bold">值</li>
|
|
|
|
- <li class="item">2023-08-20</li>
|
|
|
|
- <li class="item"><span class="val-box">123</span></li>
|
|
|
|
- </ul>
|
|
|
|
|
|
+
|
|
|
|
+ <div class="warn_txt" v-if="result?.Status===1">
|
|
|
|
+ 该数据已存在数据库,名称为:{{result.SearchItem.EdbName}},目录为:{{ getClassifyName(result.ClassifyList) }},如需重新添加,请删除原指标
|
|
|
|
+ </div>
|
|
|
|
+ <div class="warn_txt" v-if="result?.Status===3">
|
|
|
|
+ 该数据已存在数据库,名称为:{{result.SearchItem.EdbName}},目录为:{{ getClassifyName(result.ClassifyList) }}
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="no-auth" v-if="result?.Status===3">您当前暂无权限查看该指标,如需查看,请联系管理员</div>
|
|
|
|
+ <template v-else>
|
|
|
|
+ <template v-if="result?.Status===1||result?.SearchItem.DataList?.length">
|
|
|
|
+ <van-cell title="指标ID" :value="result?.SearchItem.EdbCode" />
|
|
|
|
+ <van-cell title="起始时间" :value="result?.SearchItem.StartDate" />
|
|
|
|
+ <van-cell title="终止时间" :value="result?.SearchItem.EndDate"/>
|
|
|
|
+ <ul class="data-value-wrap">
|
|
|
|
+ <li class="item" style="font-weight:bold">时间</li>
|
|
|
|
+ <li class="item" style="font-weight:bold">值</li>
|
|
|
|
+ <template v-if="result?.SearchItem.DataList">
|
|
|
|
+ <template v-for="item,index in result?.SearchItem.DataList" :key="index">
|
|
|
|
+ <li class="item">{{item.DataTime}}</li>
|
|
|
|
+ <li class="item"><span class="val-box">{{item.Value}}</span></li>
|
|
|
|
+ </template>
|
|
|
|
+ </template>
|
|
|
|
+ <div class="data-empty" v-else>
|
|
|
|
+ <img src="https://hzstatic.hzinsights.com/static/ETA_mobile/empty_img.png" alt="">
|
|
|
|
+ <p>暂无对应的数据</p>
|
|
|
|
+ </div>
|
|
|
|
+ </ul>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <div class="search-empty-wrap" v-else>
|
|
|
|
+ <img src="https://hzstatic.hzinsights.com/static/ETA_mobile/empty_img.png" alt="">
|
|
|
|
+ <p>未搜索到该指标</p>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <div class="btns-wrap">
|
|
|
|
+ <van-button block type="primary" v-if="result?.Status===2" :disabled="!result?.SearchItem.DataList?.length" @click="handleShowEditBaseEDB">下一步</van-button>
|
|
|
|
+ <van-button block type="primary" v-else-if="[1,3].includes(result?.Status)" @click="handleClearPage">知道了</van-button>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 选择数据来源 -->
|
|
<!-- 选择数据来源 -->
|
|
@@ -72,19 +187,34 @@ const searchCompanyTxt=ref('')
|
|
>
|
|
>
|
|
<van-picker
|
|
<van-picker
|
|
title="数据来源"
|
|
title="数据来源"
|
|
- :columns="dataSourceOpts"
|
|
|
|
|
|
+ :columns="edbSourceOpts"
|
|
|
|
+ :columns-field-names="{text:'SourceName',value:'EdbSourceId'}"
|
|
@confirm="onConfirmDataSource"
|
|
@confirm="onConfirmDataSource"
|
|
@cancel="showSelectDataSource=false"
|
|
@cancel="showSelectDataSource=false"
|
|
/>
|
|
/>
|
|
</van-popup>
|
|
</van-popup>
|
|
|
|
+
|
|
|
|
+ <!-- 新增基础指标 -->
|
|
|
|
+ <EditBaseEDB
|
|
|
|
+ v-model="showEditBaseEDB"
|
|
|
|
+ :baseInfo="baseInfo"
|
|
|
|
+ @addSuccess="handleEditBaseEdbSuccess"
|
|
|
|
+ />
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.add-baseEDB-page{
|
|
.add-baseEDB-page{
|
|
|
|
+ padding-bottom: 100PX;
|
|
:deep(.van-cell__right-icon){
|
|
:deep(.van-cell__right-icon){
|
|
color: #333;
|
|
color: #333;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+.warn_txt{
|
|
|
|
+ text-align: center;
|
|
|
|
+ padding: var(--van-padding-md);
|
|
|
|
+ color: #FF4E00;
|
|
|
|
+ line-height: 1.7;
|
|
|
|
+}
|
|
.search-box{
|
|
.search-box{
|
|
padding: var(--van-padding-md);
|
|
padding: var(--van-padding-md);
|
|
.van-search{
|
|
.van-search{
|
|
@@ -132,5 +262,40 @@ const searchCompanyTxt=ref('')
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ .data-empty{
|
|
|
|
+ width: 100%;
|
|
|
|
+ text-align: center;
|
|
|
|
+ color: $font-grey;
|
|
|
|
+ img{
|
|
|
|
+ width: 200PX;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+.search-empty-wrap{
|
|
|
|
+ text-align: center;
|
|
|
|
+ color: $font-grey;
|
|
|
|
+ img{
|
|
|
|
+ width: 200PX;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+.no-auth{
|
|
|
|
+ width: 80%;
|
|
|
|
+ max-width: 500PX;
|
|
|
|
+ padding: 10PX 20PX;
|
|
|
|
+ margin: 30PX auto;
|
|
|
|
+ text-align: center;
|
|
|
|
+ background: #ECECEC;
|
|
|
|
+ color: #FF4E00;
|
|
|
|
+ border: 1px dashed #FF4E00;
|
|
|
|
+}
|
|
|
|
+.btns-wrap{
|
|
|
|
+ position: fixed;
|
|
|
|
+ left: 0;
|
|
|
|
+ right: 0;
|
|
|
|
+ bottom: 0;
|
|
|
|
+ padding: 20PX;
|
|
|
|
+ z-index: 99;
|
|
|
|
+ background-color: #fff;
|
|
|
|
+}
|
|
|
|
+
|
|
</style>
|
|
</style>
|