Quellcode durchsuchen

预测指标库部分,完成

cxmo vor 1 Jahr
Ursprung
Commit
c036a5506d

+ 1 - 0
src/views/dataEntry_manage/databaseComponents/chartTrendRender.vue

@@ -710,6 +710,7 @@ export default {
 		.min-data-input { margin-top: 210px; }
 	}
 	.header {
+		display: flex;
 		position: relative;
 		.year-btn,.btn-sty {
 			min-width: 98px;

+ 16 - 16
src/views/dataEntry_manage/databaseList.vue

@@ -254,21 +254,21 @@
 						</div>
 						<ul class="value-ul"
 							v-show="showTable&&dataList.length">
-								<li class="value-item">
-									<span>日期(频度:{{EdbData.Frequency}})</span>
-									<span style="min-width:200px;text-align:center;">值</span>
-								</li>
-								<li class="value-item"
-									v-for="item in dataList.slice(0,3)"
-									:key="item.EdbDataId">
-									<span class="value-label">
-										<i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
-										{{item.DataTime}}
-									</span>
-									<span :class="['value-label',{'predict-act': EdbData.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>
+							<li class="value-item">
+								<span>日期(频度:{{EdbData.Frequency}})</span>
+								<span style="min-width:200px;text-align:center;">值</span>
+							</li>
+							<li class="value-item"
+								v-for="item in dataList.slice(0,3)"
+								:key="item.EdbDataId">
+								<span class="value-label">
+									<i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
+									{{item.DataTime}}
+								</span>
+								<span :class="['value-label',{'predict-act': EdbData.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="list" v-show="activeTab==='Data'">
 						<edb-detail-data 
@@ -2175,7 +2175,7 @@ export default {
 			&.detail{
 				display: flex;
 				flex-direction: column;
-				.header{
+				>.header{
 					display: flex;
 					position: relative;
 					.el-tabs{

+ 16 - 10
src/views/predictEdb_manage/components/chartInfo.vue

@@ -7,14 +7,14 @@
 				type="primary"
 				v-for="item in yearSelector"
 				:key="item.value"
-				size="medium"
+				size="mini"
 				:plain="item.value !== year_select"
 				class="year-btn"
 				@click.native="changeYear(item)"
 				>{{ item.name }}</el-button
 			>
 			<el-button 
-                type="text" 
+                type="primary" size="mini"
                 class="btn-sty" 
                 @click="openDateDia"
             >{{dateTip}}</el-button>
@@ -30,8 +30,14 @@
                     @change="seasonYearChange"
                 />
             </template>
-            <span v-permission="permissionBtn.predictEdbPermission.edbPreData_switchSeason"
-                class="change-chart-btn" @click="chartTypeChange">切换{{chartInfo.ChartType==1?'季节性图':'曲线图'}}</span>
+            <!-- <span v-permission="permissionBtn.predictEdbPermission.edbPreData_switchSeason"
+                class="change-chart-btn" @click="chartTypeChange">切换{{chartInfo.ChartType==1?'季节性图':'曲线图'}}</span> -->
+            <el-button type="primary" size="mini" class="btn-sty" style="margin-left:auto;"
+                v-permission="permissionBtn.predictEdbPermission.edbPreData_switchSeason"
+                @click="chartTypeChange">
+                <i class="el-icon-sort" style="transform: rotate(90deg);"></i>
+                    切换{{chartInfo.ChartType==1?'季节性图':'曲线图'}}
+            </el-button>
         </div>
         <div class="chartWrapper">
             <Chart 
@@ -185,20 +191,20 @@ export default {
 
 <style lang="scss" scoped>
 .predicedb-chart-wrap{
-    padding: 30px;
+    /* padding: 30px; */
     .header {
+        display: flex;
         position: relative;
         margin-bottom: 30px;
-        .year-btn {
+        .year-btn,.btn-sty {
             min-width: 90px;
             font-size: 14px;
             margin-right: 5px;
             margin-bottom: 5px;
         }
         .btn-sty {
-            font-size: 16px;
-            padding: 9px;
-            border: 1px solid #409eff;
+            background-color: #fff;
+			color: #0052D9;
         }
         .change-chart-btn{
             float: right;
@@ -219,7 +225,7 @@ export default {
         }
     }
     .calendar-cont {
-        margin: 30px auto;
+        /* margin: 30px auto; */
         text-align: center;
         display: block;
         .el-radio-button__inner {

+ 1 - 2
src/views/predictEdb_manage/components/childData.vue

@@ -173,13 +173,12 @@ export default {
 </script>
 <style scoped lang="scss">
 .data-wrapper {
-  padding-top: 40px;
   .value-ul {
     margin-top: 10px;
     border-bottom: 1px solid #dcdfe6;
     border-top: 1px solid #dcdfe6;
     /* max-height: 520px; */
-    max-height: calc(100vh - 450px);
+    max-height: calc(100vh - 350px);
     overflow-y: auto;
     .value-item {
       /* width: 100%; */

+ 84 - 3
src/views/predictEdb_manage/components/edbDetail.vue

@@ -6,7 +6,36 @@
             @refreshData="refreshData"
             ref="chartInfo"
         />
-        <div class="author" style="float:right">添加人:{{edbData.EdbInfo.SysUserRealName}}</div>
+        <div class="info" style="display: flex;justify-content: space-between;">
+            <span>数据来源:{{edbData.EdbInfo.SourceName}}</span>
+            <span>添加人:{{edbData.EdbInfo.SysUserRealName}}</span>
+        </div>
+        <ul
+            class="value-ul"
+            v-show="showData&&dataList.length"
+            >
+            <li class="value-item">
+                <span>日期(频度:{{EdbData.Frequency}})</span>
+                <span style="min-width:200px;text-align:center;">值</span>
+            </li>
+            <li
+                class="value-item"
+                v-for="item in dataList.slice(0,3)"
+                :key="item.EdbDataId"
+            >
+                <span class="value-label">
+                <i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
+                {{ item.DataTime }}
+                </span>
+                <span
+                :class="['value-label',{'predict-act': item.isPredic}]"
+                style="min-width: 200px; text-align: center"
+                >{{ item.Value }}</span
+                >
+            </li>
+            <li class="nodata value-item" v-if="!dataList.length">暂无数据</li>
+        </ul>
+
     </div>
 </template>
 
@@ -45,6 +74,9 @@ export default {
                 DataList:null,
                 EdbInfo:{}
             },
+            showData:false,
+            dataList: [],
+            EdbData:{}
         }
     },
     methods: {
@@ -90,6 +122,7 @@ export default {
                         this.setChartImage()
                     })
                 }
+                this.getData()
             })
         },
         refreshData(type=''){
@@ -119,12 +152,60 @@ export default {
                 ImageUrl: Data.ResourceUrl,
             });
         },
+        getData(){
+            preDictEdbInterface.edbDataInfo({
+                EdbInfoId: this.id,
+                CurrentIndex: 1
+            }).then(res => {
+                this.showData = true;
+                if(res.Ret!==200) return 
+                const {Item} = res.Data
+                Item.PredictDataList && Item.PredictDataList.forEach(_ => {
+                    _.isPredic = true;
+                })
+                this.EdbData = Item
+                this.dataList = [...Item.PredictDataList,...Item.DataList]
+            })
+        },
 
     },
 
 }
 </script>
 
-<style>
-
+<style lang="scss" scoped>
+.value-ul {
+    margin-top: 10px;
+    border-bottom: 1px solid #dcdfe6;
+    .value-item {
+        padding: 14px 0;
+        border: 1px solid #dcdfe6;
+        border-bottom: none;
+        display: flex;
+        justify-content: space-around;
+        .value-label {
+            position: relative;
+            color: #666;
+        }
+        .predict-act {
+            color: orange;
+        }
+        .new-tag {
+            width: 6px;
+            height: 6px;
+            display: inline-block;
+            position: absolute;
+            left: -12px;
+            top: 50%;
+            transform: translateY(-50%);
+            border-radius: 50%;
+            background: #f00;
+        }
+    }
+    .nodata {
+        text-align: center;
+        padding: 40px 0;
+        color: #999;
+    }
+}
 </style>

+ 86 - 29
src/views/predictEdb_manage/predictEdb.vue

@@ -167,30 +167,35 @@
 
 				<!-- 详情 -->
 				<div class="edb-detail-wrapper" v-if="select_id&&!showAssociateChart&&!showAssociateComputeData">
-					<div class="detail-top">
-						<span class="title">{{ currentLang==='en'?(edb_nameEn||edbName):edbName }}</span>
-						<ul class="action-ul">
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
-								class="editsty" @click="clickEdbNameHandle" v-if="currentLang==='ch'||!edb_nameEn">
+					<div class="detail-header">
+						<el-tabs v-model="activeTab" @tab-click="changeShowType">
+							<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-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
+								type="text" @click="clickEdbNameHandle" v-if="currentLang==='ch'||!edb_nameEn">
 								设置英文名称
-							</li>
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_edbSource"
-								class="editsty" @click="isLookHistory=true;lookEdbId=select_id">指标溯源</li>
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_update"
-								class="editsty" @click="updateEdbPartHandle">更新</li>
-							<li class="editsty" @click="editEdbHandle('')" 
-								v-if="edbButton.OpButton&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_edit)">编辑</li>
-							<li class="editsty" @click="saveEdbHandle" 
-								v-if="detail_show_chart&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_save)">保存</li>
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_recalcu"
-								class="editsty" @click="updateEdbHandle">重新计算</li>
-							<li class="deletesty" @click="delEdbHandle" 
-								v-if="edbButton.DeleteButton&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_del)">删除</li>
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
-								class="editsty" @click="copyData">复制数据</li>
-							<li v-permission="permissionBtn.predictEdbPermission.edbPreData_viewData"
-								class="editsty" @click="detail_show_chart=!detail_show_chart">{{detail_show_chart ? '查看数据' : '查看图表'}} </li>
-						</ul>
+							</el-button>
+							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_edbSource"
+							type="text" @click="isLookHistory=true;lookEdbId=select_id">指标溯源</el-button>
+							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_update"
+								type="text" @click="updateEdbPartHandle">更新</el-button>
+							<el-button type="text" @click="editEdbHandle('')" 
+								v-if="edbButton.OpButton&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_edit)">编辑</el-button>
+							<el-button type="text" @click="saveEdbHandle" 
+								v-if="detail_show_chart&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_save)">保存</el-button>
+							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_recalcu"
+								type="text" @click="updateEdbHandle">重新计算</el-button>
+							<el-button class="deletesty" @click="delEdbHandle" type="text"
+								v-if="edbButton.DeleteButton&&permissionBtn.checkPermissionBtn(permissionBtn.predictEdbPermission.edbPreData_del)">删除</el-button>
+							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
+								type="text" @click="copyData">复制数据</el-button>
+							<!-- <el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_viewData"
+								type="text" @click="detail_show_chart=!detail_show_chart">{{detail_show_chart ? '查看数据' : '查看图表'}} </el-button> -->
+						</div>
 					</div>
 
 					<!--  -->
@@ -589,6 +594,8 @@ export default {
 
 			showAssociateChart:false,//显示指标关联的图
 			showAssociateComputeData:false,//显示指标关联的引用计算指标
+
+			activeTab:'',
 		};
 	},
 	computed: {
@@ -622,6 +629,7 @@ export default {
 		// /* 表格id */
 		select_id(newval) {
 			this.detail_show_chart = true;
+			this.activeTab='Chart'
 			this.$nextTick(()=>{
 				//切换为曲线图 重置选择状态
 				if(this.$refs.detailComponentRef){
@@ -639,6 +647,7 @@ export default {
 		select_classify(newval) {
 			if(this.$refs.listRef) this.$refs.listRef.scrollTop = 0;
 			if(newval) {
+				this.activeTab = ''
 				this.public_page = 1;
 				this.getPublicList()
 			}
@@ -673,7 +682,7 @@ export default {
 			this.$nextTick(()=>{
 				setTimeout(() => {
 				const dom = document.querySelector(".el-tree-node.is-current");
-				const parentDom = document.querySelector(".tree-cont");
+				const parentDom = document.querySelector(".target_tree");
 				if (!dom || !parentDom) {
 					this.searchLoading = false;
 					return;
@@ -1319,6 +1328,10 @@ export default {
 				this.dynamicNode = _node;
 				this.dynamicNode&&this.resetNodeStyle(this.dynamicNode)
 			})
+		},
+		changeShowType(){
+			if(!this.activeTab) return
+			this.detail_show_chart = this.activeTab==='Chart'?true:false
 		}
 	},
 	mounted() {
@@ -1346,6 +1359,47 @@ export default {
 	}
 }
 </script>
+<style lang="scss">
+.predictEdb-container{
+	.detail-header{
+		display: flex;
+		position: relative;
+		.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;
+				}
+			}
+		}
+	}
+	.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;
+		}
+	}
+}
+</style>
 <style lang='scss' scoped>
 @import "~@/styles/theme-vars.scss";
 *{ box-sizing: border-box;}
@@ -1404,11 +1458,13 @@ $mini-font: 12px; $normal-font: 14px;
 
 			.tree-cont {
 				padding: 0 20px 30px 20px;
-				max-height: calc(100vh - 280px);
-				overflow: auto;
+				/* max-height: calc(100vh - 280px);
+				overflow: auto; */
 			}
 			.target_tree {
 				color: #333;
+				max-height: calc(100vh - 400px);
+				overflow-y:auto;
 				.custom-tree-node {
 					display: flex !important;
 					justify-content: space-between;
@@ -1426,7 +1482,7 @@ $mini-font: 12px; $normal-font: 14px;
 				}
 			}
 			.noDepart {
-				margin: 60px 0;
+				margin: 30px 0;
 				display: flex;
 				align-items: center;
 				justify-content: center;
@@ -1474,8 +1530,9 @@ $mini-font: 12px; $normal-font: 14px;
 				}
 				.detail-wrap {
 					position: relative;
-					padding: 30px 20px;
-					height: calc(100vh - 190px);
+					padding: 16px;
+					height: calc(100vh - 180px);
+					overflow-y: auto;
 					.toggle-text {
 						position: absolute;
 						right: 20px;