|
@@ -13,7 +13,7 @@
|
|
|
<el-button v-permission="permissionBtn.edbDataPermission.edbData_dataAdjust"
|
|
|
type="primary" @click="$router.push({path: '/adjustdata'})">数据调整</el-button>
|
|
|
<el-button v-permission="permissionBtn.edbDataPermission.edbData_batchUpdate"
|
|
|
- type="primary" plain @click="updateHandler">一键更新</el-button>
|
|
|
+ type="primary" plain @click="updateHandler">一键刷新</el-button>
|
|
|
</div>
|
|
|
<div class="top-right">
|
|
|
|
|
@@ -119,23 +119,22 @@
|
|
|
@click.stop="addNode(node,data)"
|
|
|
v-if="data.Button.AddButton"
|
|
|
/>
|
|
|
- <!--如果是分类,判断data.Button.OpButton不变;如果是指标,再加上checkPermissionBtn判断-->
|
|
|
+ <!--如果是分类,判断data.Button.OpButton不变;如果是指标,不显示(ETA1.0.3)-->
|
|
|
<img
|
|
|
src="~@/assets/img/set_m/edit.png"
|
|
|
alt=""
|
|
|
style="width: 15px; height: 14px; margin-right: 8px"
|
|
|
@click.stop="editNode(node,data)"
|
|
|
- v-if="data.EdbCode
|
|
|
- ?(data.Button.OpButton&&permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_edit))
|
|
|
- :(data.Button.OpButton)"
|
|
|
+ v-if="!data.EdbCode&&(data.Button.OpButton)"
|
|
|
/>
|
|
|
+ <!--如果是分类,判断data.Button.DeleteButton不变;如果是指标,不显示(ETA1.0.3)-->
|
|
|
<img
|
|
|
slot="reference"
|
|
|
src="~@/assets/img/set_m/del.png"
|
|
|
alt=""
|
|
|
style="width: 14px; height: 14px;"
|
|
|
@click.stop="removeNode(node,data)"
|
|
|
- v-if="data.Button.DeleteButton"
|
|
|
+ v-if="!data.EdbCode&&(data.Button.DeleteButton)"
|
|
|
/>
|
|
|
<i class="el-icon-view" v-if="data.EdbType===2&&![58,59,67,68].includes(data.Source)" @click.stop="viewNode(node,data)"></i>
|
|
|
<img
|
|
@@ -171,65 +170,45 @@
|
|
|
<div class="main-right right" id="right" style="background:transparent;border:none;box-shadow:none" v-if="showAssociateChart">
|
|
|
<dataAssociateChart :edbInfoId="selected_edbid"></dataAssociateChart>
|
|
|
</div>
|
|
|
- <div class="main-right right" id="right" style="background:transparent;border:none;box-shadow:none" v-if="showAssociateComputeData">
|
|
|
+ <div class="main-right right" id="right" style="background:transparent;border:none;box-shadow:none;padding-top: 30px;box-sizing: border-box;" v-if="showAssociateComputeData">
|
|
|
<dataAssociateComputeData :edbInfoId="selected_edbid"></dataAssociateComputeData>
|
|
|
</div>
|
|
|
- <div class="main-right right" id="right" v-show="!showAssociateChart&&!showAssociateComputeData">
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);"
|
|
|
- class="firstColumTable"
|
|
|
- border>
|
|
|
- <el-table-column
|
|
|
- v-for="item in tableColumsOne"
|
|
|
- :key="item.label"
|
|
|
- :width="item.widthsty"
|
|
|
- :min-width="item.minwidthsty"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot="header" slot-scope="scope">
|
|
|
- <div class="chartEn-mark" style="top: -10px;" v-show="scope.$index ==0 && tableData[0] && tableData[0].IsEnEdb" >En</div>
|
|
|
- <span>{{item.label}}</span>
|
|
|
- </template>
|
|
|
- <template slot-scope="scope">
|
|
|
- <!-- 中文 -->
|
|
|
- <span v-show="currentLang=='ch'">{{ scope.row[item.key] }}</span>
|
|
|
- <span v-show="currentLang=='en'">{{scope.row[item.enKey||item.key] || scope.row[item.key]}}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);"
|
|
|
- border>
|
|
|
- <el-table-column
|
|
|
- v-for="item in tableColumsTwo"
|
|
|
- :key="item.label"
|
|
|
- :label="item.label"
|
|
|
- :width="item.widthsty"
|
|
|
- :min-width="item.minwidthsty"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template #header>
|
|
|
- <span>{{ item.label }}</span>
|
|
|
- </template>
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ scope.row[item.key] }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- width="260"
|
|
|
- align="center"
|
|
|
- label="操作"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button v-permission="permissionBtn.edbDataPermission.edbData_update"
|
|
|
- size="mini" type="text" @click="refreshTargetHandle" >更新</el-button>
|
|
|
- <el-button
|
|
|
- v-permission="permissionBtn.edbDataPermission.edbData_edit"
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- :disabled="!scope.row.Button.OpButton"
|
|
|
+ <!-- 指标图表列表 -->
|
|
|
+ <div class="main-right right list" id="right" v-show="isShowList">
|
|
|
+ <p>共{{Total||0}}个指标</p>
|
|
|
+ <div class="list-wrap" ref="listRef" @scroll="loadMoreHandle" v-if="Total">
|
|
|
+ <div class="list-item" v-for="item in chartList" :key="item.EdbInfoId">
|
|
|
+ <div class="header">
|
|
|
+ <span v-show="currentLang=='ch'">{{ item.EdbName }}</span>
|
|
|
+ <span v-show="currentLang=='en'">{{ item.EdbNameEn || item.EdbName }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="image" @click="detailShowHandle(item)">
|
|
|
+ <img :src="item.ChartImage" alt=""/>
|
|
|
+ </div>
|
|
|
+ <div class="info">
|
|
|
+ 创建时间:{{item.CreateTime.substring(0,10)}}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <p style="height: 40px;line-height:40px;width: 100%;"></p>
|
|
|
+ </div>
|
|
|
+ <div v-if="!Total" class="nodata">
|
|
|
+ <tableNoData text="暂无指标"/>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 指标详情 -->
|
|
|
+ <div class="main-right right detail" id="right" v-show="isShowDetail">
|
|
|
+ <div class="header">
|
|
|
+ <el-tabs v-model="activeTab" @tab-click="rePainChart">
|
|
|
+ <el-tab-pane label="走势图" name="Chart">
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="数据详情" name="Data">
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <div class="edb-tool">
|
|
|
+ <el-button v-if="isEdbBtnShow('update')"
|
|
|
+ type="text" @click="refreshTargetHandle" >刷新</el-button>
|
|
|
+ <el-button v-if="isEdbBtnShow('edit')"
|
|
|
+ type="text" :disabled="!(EdbData.Button.OpButton)"
|
|
|
@click="editNode({
|
|
|
level: 4,
|
|
|
parent: {
|
|
@@ -241,47 +220,73 @@
|
|
|
}
|
|
|
},
|
|
|
}
|
|
|
- },scope.row)"
|
|
|
- >编辑</el-button>
|
|
|
- <el-button size="mini" type="text" @click.stop="reCalculateHandler" v-if="scope.row.EdbType===2" :loading="calculateLoading">重新计算</el-button>
|
|
|
- <el-button v-if="permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_toImgs)"
|
|
|
- size="mini" type="text" @click.stop="createChartHandle(scope.row.EdbInfoId)">一键成图</el-button>
|
|
|
- <el-button v-if="permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_copyData)"
|
|
|
- size="mini" type="text" @click="copyCode">复制数据</el-button>
|
|
|
- <!-- <lookEdbHistory :showType="2" :edbId="selected_edbid" v-if="scope.row.EdbType===2"/> -->
|
|
|
- <el-button size="mini" type="text"
|
|
|
- v-if="scope.row.EdbType===2&&permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_edbSource)" @click="isLookHistory=true;lookEdbId=selected_edbid">指标溯源</el-button>
|
|
|
-
|
|
|
- <el-button v-if="permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_enNameSetting)"
|
|
|
- size="mini" type="text" @click="openEnNameDia">设置英文名称</el-button>
|
|
|
- <el-button size="mini" type="text" @click.stop="updateNewestDataHandle"
|
|
|
- v-if="scope.row.Button.InsertNewDataButton&&permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_newestValue)" >{{scope.row.DataInsertConfig.Date?'编辑最新值':'添加最新值'}}</el-button>
|
|
|
- <el-button size="mini" type="text" @click.stop="refreshBaseHandler"
|
|
|
- v-if="scope.row.EdbType===1&&permissionBtn.checkPermissionBtn(permissionBtn.edbDataPermission.edbData_refreshAll)" :loading="refreshLoading">全部刷新</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <div slot="empty" style="padding: 50px 0 320px;">
|
|
|
- <tableNoData :text="defaultWarn"/>
|
|
|
+ },EdbData)"
|
|
|
+ >编辑</el-button>
|
|
|
+ <!-- 指保存指标的上下限,在走势图才显示 -->
|
|
|
+ <el-button v-if="activeTab==='Chart'"
|
|
|
+ type="text" @click.stop="saveEdbLimit">保存</el-button>
|
|
|
+ <el-button v-if="isEdbBtnShow('setEn')"
|
|
|
+ type="text" @click="openEnNameDia">设置英文名称</el-button>
|
|
|
+ <el-button v-if="EdbData.Button.InsertNewDataButton&&isEdbBtnShow('newValue')"
|
|
|
+ type="text" @click.stop="updateNewestDataHandle" >{{(EdbData.DataInsertConfig.Date)?'编辑最新值':'添加最新值'}}</el-button>
|
|
|
+ <el-button v-if="EdbData.EdbType===2"
|
|
|
+ type="text" @click.stop="reCalculateHandler" :loading="calculateLoading">重新计算</el-button>
|
|
|
+ <el-button v-if="EdbData.EdbType===2&&isEdbBtnShow('toSource')"
|
|
|
+ type="text" @click="isLookHistory=true;lookEdbId=selected_edbid">指标溯源</el-button>
|
|
|
+ <el-button v-if="EdbData.EdbType===1&&isEdbBtnShow('refreshAll')"
|
|
|
+ type="text" @click.stop="refreshBaseHandler" :loading="refreshLoading">全部刷新</el-button>
|
|
|
+ <el-button v-if="isEdbBtnShow('copyData')"
|
|
|
+ type="text" @click="copyCode">复制数据</el-button>
|
|
|
+ <el-button v-if="EdbData.Button.DeleteButton"
|
|
|
+ type="text" @click="removeNode(_,EdbData)" style="color:#C54322;">删除</el-button>
|
|
|
</div>
|
|
|
- </el-table>
|
|
|
- <ul
|
|
|
- class="value-ul"
|
|
|
- ref="valueUl"
|
|
|
- @scroll="scrollHandle"
|
|
|
- v-show="showTable&&dataList.length">
|
|
|
- <li
|
|
|
- class="value-item"
|
|
|
- v-for="item in dataList"
|
|
|
- :key="item.EdbDataId"
|
|
|
- >
|
|
|
- <span class="value-label">
|
|
|
- <i class="new-tag" v-if="tableData[0].LatestDate===item.DataTime"></i>
|
|
|
- {{item.DataTime}}
|
|
|
- </span>
|
|
|
- <span :class="['value-label',{'predict-act': tableData[0].DataInsertConfig.Date===item.DataTime}]" style="min-width:200px;text-align:center;">{{item.Value}}</span>
|
|
|
- </li>
|
|
|
- <li class="nodata value-item" v-if="!dataList.length">暂无数据</li>
|
|
|
- </ul>
|
|
|
+ </div>
|
|
|
+ <div class="container" id="detail-container">
|
|
|
+ <div class="chart" v-show="activeTab==='Chart'">
|
|
|
+ <chart-trend-render
|
|
|
+ :edbid="selected_edbid"
|
|
|
+ :chartLang="currentLang"
|
|
|
+ ref="createChart"
|
|
|
+ @editEnName="openEnNameDia"/>
|
|
|
+ <div class="info">
|
|
|
+ <span>数据来源:{{EdbData.SourceName}}</span>
|
|
|
+ <span>添加人:{{EdbData.SysUserRealName}}</span>
|
|
|
+ </div>
|
|
|
+ <ul class="value-ul"
|
|
|
+ v-show="showTable&&dataList.length">
|
|
|
+ <li class="value-item" style="background-color: #EBEFF6;">
|
|
|
+ <span style="width:240px">日期(频度:{{EdbData.Frequency}})</span>
|
|
|
+ <span style="flex:1;">值</span>
|
|
|
+ </li>
|
|
|
+ <li class="value-item"
|
|
|
+ v-for="item in dataList.slice(0,3)"
|
|
|
+ :key="item.EdbDataId">
|
|
|
+ <span class="value-label date" style="width:240px">
|
|
|
+ <span style="position: relative;">
|
|
|
+ <i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
|
|
|
+ {{item.DataTime}}
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ <span :class="['value-label',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]" style="flex:1;">
|
|
|
+ <span :class="['value-style',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]">{{item.Value}}</span>
|
|
|
+ </span>
|
|
|
+ </li>
|
|
|
+ <li class="nodata value-item" v-if="!dataList.length">暂无数据</li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div class="list" v-show="activeTab==='Data'">
|
|
|
+ <edb-detail-data
|
|
|
+ ref="edb_detail_data"
|
|
|
+ :current-lang="currentLang"
|
|
|
+ :table-data="tableData"
|
|
|
+ :table-colums-one="tableColumsOne"
|
|
|
+ :table-colums-two="tableColumsTwo"
|
|
|
+ :data-list="dataList"
|
|
|
+ :haveMore="haveMore"
|
|
|
+ @getNextData="()=>{page_no++;getDataList();}"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 输入英文指标弹窗 -->
|
|
@@ -369,14 +374,14 @@
|
|
|
@changeSource="changeComputedType"
|
|
|
/>
|
|
|
<!-- 一键成图弹窗 -->
|
|
|
- <create-chart
|
|
|
+ <!-- <create-chart
|
|
|
:isCreateChart="isCreateChart"
|
|
|
:edbid="selected_edbid"
|
|
|
:chartLang="currentLang"
|
|
|
ref="createChart"
|
|
|
@close="isCreateChart = false"
|
|
|
@editEnName="openEnNameDia"
|
|
|
- />
|
|
|
+ /> -->
|
|
|
|
|
|
<!-- 一键更新弹窗 -->
|
|
|
<update-dialog
|
|
@@ -443,7 +448,16 @@
|
|
|
:isOpenDialog.sync="isLookHistory"
|
|
|
:edbId="lookEdbId"
|
|
|
/>
|
|
|
-
|
|
|
+ <!-- 指数修匀弹窗 -->
|
|
|
+ <SmoothEdbDialog
|
|
|
+ :is-open-smooth="computed_type==='alpha'"
|
|
|
+ :computed-source="computed_source"
|
|
|
+ :operationForm="operationForm"
|
|
|
+ @cancel="computed_type=0"
|
|
|
+ @openPrev="isOpenComputed=true"
|
|
|
+ @addCallBack="addComputedCallBack"
|
|
|
+ @lookHistory="id => {isLookHistory=true;lookEdbId=id;}"
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -469,10 +483,13 @@ import batchComputedDialog from './databaseComponents/batchComptedDialog.vue';
|
|
|
import diffusionIndexDialog from './databaseComponents/diffusionIndexDia.vue';
|
|
|
import updateNewestDataDia from './databaseComponents/updateNewestDia.vue';
|
|
|
import EdbLabelList from '@/components/edbLabelList.vue';
|
|
|
+import chartTrendRender from './databaseComponents/chartTrendRender.vue';
|
|
|
+import edbDetailData from './databaseComponents/edbDetailData.vue';
|
|
|
+import SmoothEdbDialog from './databaseComponents/smoothEdbDialog.vue';
|
|
|
export default {
|
|
|
name: '',
|
|
|
- components: {
|
|
|
- openDialog,
|
|
|
+ components: {
|
|
|
+ openDialog,
|
|
|
addTargetDiaBase,
|
|
|
completeTargetDia,
|
|
|
computedDialog,
|
|
@@ -489,7 +506,10 @@ export default {
|
|
|
batchComputedDialog,
|
|
|
diffusionIndexDialog,
|
|
|
updateNewestDataDia,
|
|
|
- EdbLabelList
|
|
|
+ EdbLabelList,
|
|
|
+ chartTrendRender,
|
|
|
+ edbDetailData,
|
|
|
+ SmoothEdbDialog
|
|
|
},
|
|
|
directives: {
|
|
|
drag(el, bindings) {
|
|
@@ -580,7 +600,7 @@ export default {
|
|
|
{
|
|
|
label: '指标目录',
|
|
|
key: 'Menu',
|
|
|
- minwidthsty: '117px',
|
|
|
+ minwidthsty: '150px',
|
|
|
},
|
|
|
{
|
|
|
label: '起始时间',
|
|
@@ -590,12 +610,12 @@ export default {
|
|
|
{
|
|
|
label: '更新时间',
|
|
|
key: 'ModifyTime',
|
|
|
- minwidthsty: '118px',
|
|
|
+ minwidthsty: '120px',
|
|
|
},
|
|
|
{
|
|
|
label: '添加人',
|
|
|
key: 'SysUserRealName',
|
|
|
- widthsty: '100px',
|
|
|
+ widthsty: '160px',
|
|
|
}
|
|
|
],
|
|
|
haveMore: true,
|
|
@@ -666,7 +686,17 @@ export default {
|
|
|
lookEdbId: 0,
|
|
|
labelList:[],//标签列表
|
|
|
|
|
|
- CanOpClassify: false
|
|
|
+ CanOpClassify: false,
|
|
|
+
|
|
|
+ select_classifyId:0,//指标分类id
|
|
|
+ PageSize:20,
|
|
|
+ CurrentIndex:1,
|
|
|
+ Total:0,
|
|
|
+ IsListEnd:false,//是不是到底了
|
|
|
+ chartList:[],
|
|
|
+
|
|
|
+ activeTab:'',
|
|
|
+ activeName:'second'
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
@@ -675,7 +705,10 @@ export default {
|
|
|
this.tableData = [];
|
|
|
this.dataList = [];
|
|
|
this.defaultWarn = '请在左侧选择指标';
|
|
|
+ this.activeTab=''
|
|
|
}else {
|
|
|
+ console.log('new val')
|
|
|
+ this.activeTab='Chart'
|
|
|
this.initGetData();
|
|
|
}
|
|
|
},
|
|
@@ -685,26 +718,21 @@ export default {
|
|
|
let [search_obj] = this.searchOptions.filter(
|
|
|
(item) => item.EdbInfoId === newval
|
|
|
);
|
|
|
-
|
|
|
this.page_no = 1;
|
|
|
- this.$refs.valueUl.scrollTop = 0;
|
|
|
- // 查找图表的父级code
|
|
|
- //this.defaultShowNodes = this.findParentNodeHandle(this.treeData,search_obj.ClassifyId);
|
|
|
+ if(this.$refs.edb_detail_data){
|
|
|
+ this.$refs.edb_detail_data.$refs.valueUl.scrollTop=0
|
|
|
+ }
|
|
|
this.select_node = search_obj.UniqueCode;
|
|
|
this.selected_edbid = newval;
|
|
|
-
|
|
|
- //滚动到高亮节点位置
|
|
|
- /* setTimeout(() => {
|
|
|
- this.$refs.menuTree.setCurrentKey(this.select_node);
|
|
|
- let node = document.getElementById(`node${this.select_node}`);
|
|
|
- let parent = document.getElementsByClassName('tree-cont')[0];
|
|
|
-
|
|
|
- if(node.offsetTop > parent.offsetHeight) {
|
|
|
- parent.scrollTop = node.offsetTop - parent.offsetHeight/2
|
|
|
- }
|
|
|
- },400) */
|
|
|
}
|
|
|
},
|
|
|
+ select_classifyId(newval){
|
|
|
+ if(this.$refs.listRef) this.$refs.listRef.scrollTop = 0;
|
|
|
+ if(newval){
|
|
|
+ this.CurrentIndex = 1
|
|
|
+ this.getEdbChartList()
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
computed: {
|
|
|
/* 计算弹窗控制 */
|
|
@@ -727,8 +755,35 @@ export default {
|
|
|
let id = parseInt(localStorage.getItem('AdminId'));
|
|
|
return id;
|
|
|
},
|
|
|
+ //指标详情,也就是tableData[0]
|
|
|
+ EdbData(){
|
|
|
+ return this.tableData[0]?this.tableData[0]:{Button:{},DataInsertConfig:{},DataList:[]}
|
|
|
+ },
|
|
|
+ //是否显示指标列表
|
|
|
+ isShowList(){
|
|
|
+ return !this.showAssociateChart&&!this.showAssociateComputeData&&!this.selected_edbid
|
|
|
+ },
|
|
|
+ //是否显示指标详情
|
|
|
+ isShowDetail(){
|
|
|
+ return !this.showAssociateChart&&!this.showAssociateComputeData&&this.selected_edbid
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
+ //控制指标详情操作按钮
|
|
|
+ isEdbBtnShow(type){
|
|
|
+ const {edbDataPermission,checkPermissionBtn}=this.permissionBtn
|
|
|
+ const BtnMap = {
|
|
|
+ 'update':edbDataPermission.edbData_update,
|
|
|
+ 'edit':edbDataPermission.edbData_edit,
|
|
|
+ 'toImg':edbDataPermission.edbData_toImgs,
|
|
|
+ 'copyData':edbDataPermission.edbData_copyData,
|
|
|
+ 'toSource':edbDataPermission.edbData_edbSource,
|
|
|
+ 'setEn':edbDataPermission.edbData_enNameSetting,
|
|
|
+ 'newValue':edbDataPermission.edbData_newestValue,
|
|
|
+ 'refreshAll':edbDataPermission.edbData_refreshAll,
|
|
|
+ }
|
|
|
+ return checkPermissionBtn(BtnMap[type])
|
|
|
+ },
|
|
|
/* 获取树分类数据 */
|
|
|
getTreeData(params) {
|
|
|
|
|
@@ -787,7 +842,8 @@ export default {
|
|
|
//将指标添加进标签列表中
|
|
|
const {EdbNameEn,EdbName,EdbInfoId,UniqueCode,ClassifyId}=res.Data.Item
|
|
|
this.addLabel({code:UniqueCode,id:EdbInfoId,classifyId:ClassifyId,EdbName,EdbNameEn})
|
|
|
- this.defaultShowNodes=this.findParentNodeHandle(this.treeData,ClassifyId)
|
|
|
+ let deep_arr = _.cloneDeep(this.treeData);
|
|
|
+ this.defaultShowNodes=this.findParentNodeHandle(deep_arr,ClassifyId).reverse()||[]
|
|
|
//设置tree高亮
|
|
|
this.$refs.menuTree.setCurrentKey(UniqueCode);
|
|
|
|
|
@@ -797,9 +853,14 @@ export default {
|
|
|
this.defaultWarn = type=== 'search' ? '未搜索到该指标' : '请在左侧选择指标'
|
|
|
|
|
|
this.$refs.menuTree.setCurrentKey(null)
|
|
|
+ // 清除当前的label
|
|
|
+ this.deleteLabel({code:this.select_node,id:this.selected_edbid,classifyId:''})
|
|
|
+
|
|
|
}
|
|
|
if(type==='refresh') {
|
|
|
- this.$refs.valueUl.scrollTop = 0;
|
|
|
+ if(this.$refs.edb_detail_data){
|
|
|
+ this.$refs.edb_detail_data.$refs.valueUl.scrollTop=0
|
|
|
+ }
|
|
|
}
|
|
|
this.$nextTick(()=>{
|
|
|
const _node = this.$refs.menuTree.getNode(this.select_node)
|
|
@@ -808,8 +869,15 @@ export default {
|
|
|
//滚动到高亮位置
|
|
|
setTimeout(() => {
|
|
|
let node = document.getElementById(`node${this.select_node}`)||{}
|
|
|
- let parent = document.getElementsByClassName('tree-cont')[0];
|
|
|
- if(node.offsetTop > parent.offsetHeight) {
|
|
|
+ let parent = document.getElementsByClassName('target_tree')[0];
|
|
|
+ //parent可视区间:[scrollTop,scrollTop+offsetHeight]
|
|
|
+ //node位置:node.offsetTop
|
|
|
+ const overTop = node.offsetTop+node.clientHeight+30<parent.scrollTop
|
|
|
+ const overBottom = node.offsetTop+node.clientHeight+30>parent.scrollTop+parent.offsetHeight
|
|
|
+ if(overTop){
|
|
|
+ parent.scrollTop = node.offsetTop-60
|
|
|
+ }
|
|
|
+ if(overBottom){
|
|
|
parent.scrollTop = node.offsetTop - parent.offsetHeight/2
|
|
|
}
|
|
|
},400)
|
|
@@ -818,6 +886,33 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
}),
|
|
|
+ //获取指标图表列表
|
|
|
+ getEdbChartList(){
|
|
|
+ dataBaseInterface.getEdbChartList({
|
|
|
+ PageSize:this.PageSize,
|
|
|
+ CurrentIndex:this.CurrentIndex,
|
|
|
+ ClassifyId:this.select_classifyId,
|
|
|
+ }).then(res=>{
|
|
|
+ if(res.Ret!==200) return
|
|
|
+ if(res.Data){
|
|
|
+ this.chartList = this.CurrentIndex===1?res.Data.List:[...this.chartList,...res.Data.List]
|
|
|
+ this.Total = res.Data.Paging.Totals||0
|
|
|
+ this.IsListEnd = res.Data.Paging.IsEnd
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //指标图表列表-加载更多
|
|
|
+ loadMoreHandle: _.throttle(function() {
|
|
|
+ let scrollTop = this.$refs.listRef.scrollTop;
|
|
|
+ let clientHeight = this.$refs.listRef.clientHeight;
|
|
|
+ let scrollHeight = this.$refs.listRef.scrollHeight;
|
|
|
+ if(scrollTop + clientHeight >= scrollHeight-10 && !this.IsListEnd){
|
|
|
+ this.CurrentIndex++;
|
|
|
+ this.getEdbChartList();
|
|
|
+ }
|
|
|
+ },300),
|
|
|
/* 搜索 */
|
|
|
searchHandle(query) {
|
|
|
this.search_page = 1;
|
|
@@ -975,17 +1070,14 @@ export default {
|
|
|
},
|
|
|
/* 节点变化时 */
|
|
|
nodeChange(data,node) {
|
|
|
- this.dynamicNode = node;
|
|
|
this.search_txt = '';
|
|
|
- this.showAssociateChart=false
|
|
|
- this.showAssociateComputeData=false
|
|
|
- // this.page_no = 1;
|
|
|
- // this.$refs.valueUl.scrollTop = 0;
|
|
|
+ this.select_classifyId = !data.EdbInfoId?data.ClassifyId:0;
|
|
|
this.select_node = data.UniqueCode;
|
|
|
this.selected_edbid = data.EdbInfoId;
|
|
|
this.resetNodeStyle(node);
|
|
|
-
|
|
|
-
|
|
|
+ this.dynamicNode = node;
|
|
|
+ this.showAssociateChart=false
|
|
|
+ this.showAssociateComputeData=false
|
|
|
},
|
|
|
resetNodeStyle: _.debounce(function(node) {
|
|
|
const tree = $('.target_tree')[0];
|
|
@@ -1096,6 +1188,7 @@ export default {
|
|
|
if(res.Ret === 200) {
|
|
|
this.setComputedDialogForm(data.Source,node,data,res.Data);
|
|
|
this.computed_type = [23,24].includes(data.Source) ? 'joint' : data.Source;
|
|
|
+ this.computed_type = [72,73].includes(data.Source)? 'alpha': data.Source;
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -1159,7 +1252,7 @@ export default {
|
|
|
if(this.selected_edbid) {
|
|
|
this.loading = this.$loading({
|
|
|
lock: true,
|
|
|
- target:'.main-right',
|
|
|
+ target:'.detail',
|
|
|
text: '刷新数据中...',
|
|
|
spinner: 'el-icon-loading',
|
|
|
background: 'rgba(255, 255, 255, 0.8)'
|
|
@@ -1427,9 +1520,11 @@ export default {
|
|
|
this.selected_edbid = id;
|
|
|
|
|
|
//this.defaultShowNodes=this.findParentNodeForClassifyId(classifyId,code)
|
|
|
+ const containerDom = document.getElementById('detail-container')
|
|
|
+ containerDom&&(containerDom.scrollTop = 0)
|
|
|
|
|
|
//滚动到高亮节点位置
|
|
|
- this.$nextTick(()=>{
|
|
|
+ /* this.$nextTick(()=>{
|
|
|
setTimeout(() => {
|
|
|
let node = document.getElementById(`node${this.select_node}`)||{}
|
|
|
let parent = document.getElementsByClassName('tree-cont')[0];
|
|
@@ -1438,7 +1533,7 @@ export default {
|
|
|
parent.scrollTop = node.offsetTop - parent.offsetHeight/2
|
|
|
}
|
|
|
},400)
|
|
|
- })
|
|
|
+ }) */
|
|
|
},
|
|
|
// 查找树节点所有父节点
|
|
|
findParentNodeHandle(arr, id) {
|
|
@@ -1525,8 +1620,8 @@ export default {
|
|
|
|
|
|
initGetData() {
|
|
|
this.page_no = 1;
|
|
|
- if(this.$refs.valueUl){
|
|
|
- this.$refs.valueUl.scrollTop = 0;
|
|
|
+ if(this.$refs.edb_detail_data){
|
|
|
+ this.$refs.edb_detail_data.$refs.valueUl.scrollTop=0
|
|
|
}
|
|
|
this.getDataList();
|
|
|
},
|
|
@@ -1575,6 +1670,7 @@ export default {
|
|
|
if(res.Ret !== 200) return
|
|
|
this.setComputedDialogForm(Source,node,data,res.Data,true);
|
|
|
this.computed_type = [23,24].includes(Source) ? 'joint' : Source;
|
|
|
+ this.computed_type = [72,73].includes(data.Source)? 'alpha': data.Source;
|
|
|
})
|
|
|
},
|
|
|
|
|
@@ -1647,16 +1743,35 @@ export default {
|
|
|
moveVal: type === 22 ? dataInfo.CalculateFormula : '',
|
|
|
calendar_type: type === 35 ? dataInfo.Calendar : '',
|
|
|
}
|
|
|
+
|
|
|
+ if([72,73].includes(type)){
|
|
|
+ const {EdbName,EdbInfoId,Frequency,Unit,ClassifyId,CalculateFormula} = dataInfo
|
|
|
+ this.operationForm = {
|
|
|
+ edb_id: EdbInfoId,
|
|
|
+ oldedb_id: old_edb[0].FromEdbInfoId,
|
|
|
+ oldEdb_name: old_edb[0].FromEdbName,
|
|
|
+ EdbName,Frequency,Unit,ClassifyId,Formula:CalculateFormula,
|
|
|
+ view
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
|
|
|
/* 基础指标刷新 */
|
|
|
refreshBaseHandler() {
|
|
|
this.refreshLoading = true;
|
|
|
+ this.loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ target:'.detail',
|
|
|
+ text: '刷新数据中...',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(255, 255, 255, 0.8)'
|
|
|
+ });
|
|
|
dataBaseInterface.refreshBaseTarget({
|
|
|
EdbInfoId: Number(this.selected_edbid)
|
|
|
}).then(res => {
|
|
|
this.refreshLoading = false;
|
|
|
+ this.loading&&this.loading.close()
|
|
|
if(res.Ret !== 200) return;
|
|
|
this.$message.success(res.Msg);
|
|
|
this.initDataStatus();
|
|
@@ -1673,7 +1788,9 @@ export default {
|
|
|
/* 重新刷新 重新计算后重置刷数据 */
|
|
|
initDataStatus() {
|
|
|
this.page_no = 1;
|
|
|
- this.$refs.valueUl.scrollTop = 0;
|
|
|
+ if(this.$refs.edb_detail_data){
|
|
|
+ this.$refs.edb_detail_data.$refs.valueUl.scrollTop=0
|
|
|
+ }
|
|
|
this.getDataList();
|
|
|
},
|
|
|
/* 用于复制指标 */
|
|
@@ -1771,7 +1888,7 @@ export default {
|
|
|
changeTreeNode(){
|
|
|
this.$refs.menuTree.setCurrentKey(this.select_node);
|
|
|
this.$nextTick(()=>{
|
|
|
- const _node = this.$refs.menuTree.getNode(this.select_node)
|
|
|
+ const _node = this.$refs.menuTree.getCurrentNode()
|
|
|
this.dynamicNode = _node;
|
|
|
this.dynamicNode&&this.resetNodeStyle(this.dynamicNode)
|
|
|
})
|
|
@@ -1806,8 +1923,41 @@ export default {
|
|
|
if(node.level>maxLevel){
|
|
|
resolve([])
|
|
|
}
|
|
|
- }
|
|
|
},
|
|
|
+ //保存指标上下限
|
|
|
+ saveEdbLimit(){
|
|
|
+ if(!this.$refs.createChart) return
|
|
|
+ //获取指标的上下限
|
|
|
+ const {MaxValue=0,MinValue=0} = this.$refs.createChart.chartInfo
|
|
|
+ dataBaseInterface.saveEdbChartLimit({
|
|
|
+ EdbInfoId:this.EdbData.EdbInfoId,
|
|
|
+ MaxValue:Number(MaxValue),
|
|
|
+ MinValue:Number(MinValue)
|
|
|
+ }).then(res=>{
|
|
|
+ if(res.Ret!==200) return
|
|
|
+ this.$message.success('保存成功')
|
|
|
+
|
|
|
+ this.$refs.createChart.saveEdbImg(this.EdbData)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //重绘指标图表
|
|
|
+ rePainChart(){
|
|
|
+ if(this.activeTab!=='Chart') return
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.$refs.createChart.getDataByPath()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /* 展开对应菜单 显示详情 */
|
|
|
+ detailShowHandle({ UniqueCode, EdbInfoId,ClassifyId}) {
|
|
|
+ let params = {
|
|
|
+ code: UniqueCode,
|
|
|
+ id: EdbInfoId,
|
|
|
+ classifyId:ClassifyId
|
|
|
+ };
|
|
|
+ this.selectCurrentNode(params);
|
|
|
+ this.select_classifyId = 0;
|
|
|
+ },
|
|
|
+ },
|
|
|
//离开页面时保存标签
|
|
|
beforeRouteLeave(to,from,next){
|
|
|
sessionStorage.setItem('database',JSON.stringify(this.labelList))
|
|
@@ -1815,7 +1965,7 @@ export default {
|
|
|
},
|
|
|
mounted() {
|
|
|
this.getlabelList()
|
|
|
-
|
|
|
+ this.getEdbChartList()
|
|
|
this.$route.query.code
|
|
|
? this.getTreeData({code: this.$route.query.code,id: this.$route.query.id,classifyId:this.$route.query.classifyId})
|
|
|
: this.getTreeData();
|
|
@@ -1891,7 +2041,7 @@ export default {
|
|
|
width: 5px !important;
|
|
|
}
|
|
|
.main-left {
|
|
|
- width: 500px;
|
|
|
+ width: 400px;
|
|
|
min-width: 300px;
|
|
|
background: #fff;
|
|
|
margin-right: 20px;
|
|
@@ -1903,12 +2053,14 @@ export default {
|
|
|
position: relative;
|
|
|
box-sizing: border-box;
|
|
|
.tree-cont {
|
|
|
- padding: 30px;
|
|
|
- height: calc(100vh - 290px);
|
|
|
- overflow: auto;
|
|
|
+ padding: 30px 0 30px 30px;
|
|
|
+ /* height: calc(100vh - 290px);
|
|
|
+ overflow: auto; */
|
|
|
}
|
|
|
.target_tree {
|
|
|
color: #333;
|
|
|
+ height: calc(100vh - 350px);
|
|
|
+ overflow: auto;
|
|
|
.label-input .el-input__inner {
|
|
|
height: 25px;
|
|
|
line-height: 25px;
|
|
@@ -1971,7 +2123,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
.noDepart {
|
|
|
- margin: 60px 0;
|
|
|
+ margin: 30px 0;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
@@ -1995,28 +2147,51 @@ export default {
|
|
|
.main-right {
|
|
|
flex: 1;
|
|
|
/* width:70%; */
|
|
|
- height: calc(100vh - 288px);
|
|
|
+ height: calc(100vh - 225px);
|
|
|
background: #fff;
|
|
|
border: 1px solid #ececec;
|
|
|
border-radius: 4px;
|
|
|
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
|
|
|
- padding: 30px;
|
|
|
overflow: hidden;
|
|
|
.value-ul {
|
|
|
margin-top: 10px;
|
|
|
- border-bottom: 1px solid #dcdfe6;
|
|
|
- max-height: calc(100vh - 560px);
|
|
|
- overflow-y: auto;
|
|
|
+ border-bottom: 1px solid #EBEFF6;
|
|
|
+ //max-height: calc(100vh - 495px);
|
|
|
+ //overflow-y: auto;
|
|
|
.value-item {
|
|
|
/* width: 100%; */
|
|
|
- padding: 14px 0;
|
|
|
+ padding: 10px 0;
|
|
|
border: 1px solid #dcdfe6;
|
|
|
border-bottom: none;
|
|
|
display: flex;
|
|
|
justify-content: space-around;
|
|
|
+ >span{
|
|
|
+ padding:0 16px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
.value-label {
|
|
|
position: relative;
|
|
|
color: #666;
|
|
|
+ .value-style{
|
|
|
+ /* background-color: #ECF2FE;
|
|
|
+ color: #0052D9; */
|
|
|
+ padding:5px;
|
|
|
+ border-radius: 4px;
|
|
|
+ &.predict-act {
|
|
|
+ color: orange;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &.date{
|
|
|
+ &::after{
|
|
|
+ content: '';
|
|
|
+ position:absolute;
|
|
|
+ right:0;
|
|
|
+ top:-14px;
|
|
|
+ height:calc(100% + 28px);
|
|
|
+ width:1px;
|
|
|
+ background-color: #dcdfe6;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.predict-act {
|
|
|
color: orange;
|
|
@@ -2039,6 +2214,134 @@ export default {
|
|
|
color: #999;
|
|
|
}
|
|
|
}
|
|
|
+ &.list{
|
|
|
+ background-color: transparent;
|
|
|
+ box-shadow: none;
|
|
|
+ border:none;
|
|
|
+ padding:0 30px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ .list-wrap{
|
|
|
+ flex: 1;
|
|
|
+ margin-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ gap: 20px;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ overflow-x: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ .dragShdow {
|
|
|
+ box-shadow: 0 1px 8px rgba(64, 158, 255, 0.8);
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
+ .list-item{
|
|
|
+ width:23%;
|
|
|
+ height:375px;
|
|
|
+ background-color: #fff;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ box-sizing: border-box;
|
|
|
+ /* padding: 0 10px; */
|
|
|
+ border-radius: 4px;
|
|
|
+ border:1px solid #DCDFE6;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
|
+ .header,.info{
|
|
|
+ padding:20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+ .header{
|
|
|
+ //border-bottom: 1px solid #DCDFE6;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 600;
|
|
|
+ box-shadow: 0 3px 6px rgba(37, 37, 239, 0.1);
|
|
|
+ }
|
|
|
+ .image{
|
|
|
+ padding:20px 20px 0 20px;
|
|
|
+ flex: 1;
|
|
|
+ cursor: pointer;
|
|
|
+ img{
|
|
|
+ width:100%;
|
|
|
+ height: 230px;
|
|
|
+ object-fit: fill !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &.detail{
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ >.header{
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+ height: 60px;
|
|
|
+ .el-tabs{
|
|
|
+ width:200px;
|
|
|
+ .el-tabs__header{
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+ .el-tabs__nav{
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ .el-tabs__item{
|
|
|
+ flex: 1;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 16px;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .edb-tool{
|
|
|
+ flex: 1;
|
|
|
+ text-align: right;
|
|
|
+ display: flex;
|
|
|
+ gap: 16px;
|
|
|
+ justify-content: flex-end;
|
|
|
+ padding-right: 15px;
|
|
|
+ position: relative;
|
|
|
+ &::after{
|
|
|
+ position: absolute;
|
|
|
+ content:'';
|
|
|
+ width:100%;
|
|
|
+ left: 0;
|
|
|
+ bottom: 0;
|
|
|
+ height:2px;
|
|
|
+ background-color: #E4E7ED;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .container{
|
|
|
+ flex: 1;
|
|
|
+ overflow-y: auto;
|
|
|
+ padding:15px;
|
|
|
+ .chart{
|
|
|
+ .info{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .table{
|
|
|
+ margin-top: 16px;
|
|
|
+ border:1px solid #E7E7E7 ;
|
|
|
+ .table-header{
|
|
|
+ display: flex;
|
|
|
+ padding:6px;
|
|
|
+ span{
|
|
|
+ flex: 1;
|
|
|
+ border-bottom: 1px solid #E7E7E7;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .list{
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
.dialog-computed {
|