Przeglądaj źródła

数据转换接口调试,图表渲染默认单位改变

cxmo 1 rok temu
rodzic
commit
3a337000b4

+ 16 - 0
src/api/modules/chartApi.js

@@ -933,6 +933,22 @@ const dataBaseInterface = {
 	 */
 	getReportrefreshStatus: params => {
 		return http.post('/datamanage/chart_info/batch_refresh/result',params)
+	},
+	  /**
+		 * 获取数据转换后Edb数据
+		 * @param {Object} params 
+		 * @param {Number} params.IsConvert 是否数据转换
+		 * @param {Number} params.ConvertType 数据转换类型 1乘 2除 3对数
+		 * @param {Number} params.ConvertValue 数据转换值
+		 * @param {String} params.ConvertUnit 数据转换单位
+		 * @param {String} params.ConvertEnUnit 数据转换单位英文
+		 * @param {*} params.SeasonStartDate
+		 * @param {*} params.SeasonEndDate
+		 * @param {*} params.EdbInfoId
+		 * @returns 
+		 */
+	getChangeEdbData:params=>{
+		return http.get('/datamanage/chart_info/convert/detail',params)
 	}
 	
 }

+ 21 - 8
src/views/dataEntry_manage/addChart.vue

@@ -565,30 +565,30 @@
 						highlight-current-row
 						border
 					>
-						<el-table-column type="expand">
+						<el-table-column type="expand" v-if="![10,11].includes(chartInfo.ChartType)">
 							<template slot-scope="{row,$index}">
 								<div class="expand-wrap">
 									<div class="data-change">
-										<el-checkbox v-model="updateData[$index].isChange">数据转换</el-checkbox>
-										<el-select v-model="updateData[$index].changeType">
+										<el-checkbox v-model="updateData[$index].IsConvert">数据转换</el-checkbox>
+										<el-select v-model="updateData[$index].ConvertType">
 											<el-option label="乘以" :value="1"></el-option>
 											<el-option label="除以" :value="2"></el-option>
 											<el-option label="对数" :value="3"></el-option>
 										</el-select>
-									<el-input type="number" v-model="updateData[$index].changeNum"></el-input>
+									<el-input type="number" v-model="updateData[$index].ConvertValue"></el-input>
 									</div>
 									<div class="unit-change">
 										<label>单位</label>
-										<el-input v-model="updateData[$index].changeUnit"></el-input>
+										<el-input v-model="updateData[$index].ConvertUnit"></el-input>
 										<label>英文单位</label>
-										<el-input v-model="updateData[$index].changeUnitEn"></el-input>
+										<el-input v-model="updateData[$index].ConvertEnUnit"></el-input>
 									</div>
 									<!--柱形图-->
 									<div class="use-change" v-if="chartInfo.ChartType===7">
 										<el-radio v-model="useUnit" :label="$index">设置为图表单位</el-radio>
 									</div>
 									<div class="confirm-btn">
-										<el-button type="text">保存</el-button>
+										<el-button type="text" @click="changeTableData($index)">保存</el-button>
 									</div>
 								</div>
 							</template>
@@ -779,7 +779,7 @@ export default {
 						}
 					}
 
-					let db_arr = this.tableData.map(item => ({
+					let db_arr = this.tableData.map((item,index) => ({
 							ChartColor: item.ChartColor,
 							PredictChartColor: item.PredictChartColor,
 							ChartStyle: item.ChartStyle,
@@ -795,6 +795,19 @@ export default {
 							MinData: Number(item.MinData)
 						})
 					)
+					if(![10,11].includes(this.chartInfo.ChartType)){
+						db_arr = db_arr.map((item,index)=>{
+							const {IsConvert,ConvertType,ConvertValue,ConvertUnit,ConvertEnUnit} = this.updateData[index]
+							return {
+								...item,
+								IsConvert:Number(IsConvert),
+								ConvertType,ConvertValue,
+								ConvertUnit:IsConvert?ConvertUnit:'',
+								ConvertEnUnit:IsConvert?ConvertEnUnit:''
+							}
+						})
+					}
+					
 
 					const { ChartType,ChartName,ChartThemeId,SourcesFrom,Instructions,MarkersLines,MarkersAreas,ChartThemeStyle } = this.chartInfo;
 					let public_param = {

+ 62 - 1
src/views/dataEntry_manage/editChart.vue

@@ -554,6 +554,34 @@
 						highlight-current-row
 						border
 					>
+						<el-table-column type="expand" v-if="![10,11].includes(chartInfo.ChartType)">
+							<template slot-scope="{row,$index}">
+								<div class="expand-wrap">
+									<div class="data-change">
+										<el-checkbox v-model="updateData[$index].IsConvert">数据转换</el-checkbox>
+										<el-select v-model="updateData[$index].ConvertType">
+											<el-option label="乘以" :value="1"></el-option>
+											<el-option label="除以" :value="2"></el-option>
+											<el-option label="对数" :value="3"></el-option>
+										</el-select>
+									<el-input type="number" v-model="updateData[$index].ConvertValue"></el-input>
+									</div>
+									<div class="unit-change">
+										<label>单位</label>
+										<el-input v-model="updateData[$index].ConvertUnit"></el-input>
+										<label>英文单位</label>
+										<el-input v-model="updateData[$index].ConvertEnUnit"></el-input>
+									</div>
+									<!--柱形图-->
+									<div class="use-change" v-if="chartInfo.ChartType===7">
+										<el-radio v-model="useUnit" :label="$index">设置为图表单位</el-radio>
+									</div>
+									<div class="confirm-btn">
+										<el-button type="text" @click="changeTableData($index)">保存</el-button>
+									</div>
+								</div>
+							</template>
+						</el-table-column>
 						<el-table-column
 							v-for="item in tableColums"
 							:key="item.label"
@@ -738,7 +766,11 @@ export default {
 
 					this.$refs.markerSectionRef.initData(ChartInfo);
 
-          this.tableData = EdbInfoList;
+					this.tableData = EdbInfoList;
+					this.updateData = this.tableData.map(item=>{
+						return this.formatUpdateData(item)
+					})
+			
 
 					this.calendar_type = this.chartInfo.Calendar; //日历类型
 					this.setDefaultPreviewOption() // 设置配置项
@@ -852,6 +884,18 @@ export default {
 							MinData: Number(item.MinData)
 						})
 					)
+					if(![10,11].includes(this.chartInfo.ChartType)){
+						db_arr = db_arr.map((item,index)=>{
+							const {IsConvert,ConvertType,ConvertValue,ConvertUnit,ConvertEnUnit} = this.updateData[index]
+							return {
+								...item,
+								IsConvert:Number(IsConvert),
+								ConvertType,ConvertValue,
+								ConvertUnit:IsConvert?ConvertUnit:'',
+								ConvertEnUnit:IsConvert?ConvertEnUnit:''
+							}
+						})
+					}
 
 					const { ChartType,ChartName,ChartThemeId,SourcesFrom,Instructions,MarkersLines,MarkersAreas,ChartThemeStyle } = this.chartInfo;
 					let public_param = {
@@ -1285,6 +1329,23 @@ export default {
 			}
 		}
 	}
+	.expand-wrap{
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		gap:30px;
+		.el-checkbox{
+			margin-right: 15px;
+		}
+		.el-input{
+			width:100px;
+			height:27px;
+			line-height: 27px;
+			.el-input__icon{
+				line-height: 27px;
+			}
+		}
+	}
 }
 </style>
 <style lang="scss">

+ 79 - 14
src/views/dataEntry_manage/mixins/addOreditMixin.js

@@ -81,7 +81,8 @@ export default {
 			sourceEditForm: {
 
 			},
-			updateData:[]
+			updateData:[],
+			useUnit:''
 		}
 	},
 	computed: {
@@ -160,19 +161,78 @@ export default {
 	},
 
 	methods: {
-        formatUpdateData(data){
-            return {
-                ...data,
-                isChange:data.isChange||false,
-                changeType:data.changeType||1,
-                changeNum:data.changeNum||100,
-                changeUnit:data.Unit||'',
-                changeUnitEn:data.UnitEn||''
-            }
-        },
-		checkTableChange(type){
-			console.log('change')
-			this.isEdbDataChange = true
+        //转换从接口获取的tableData数据
+		formatUpdateData(data){
+			return {
+				...data,
+				IsConvert:Boolean(data.IsConvert),
+				ConvertType:data.ConvertType||1,
+				ConvertValue:data.ConvertValue||100,
+				ConvertUnit:data.IsConvert?data.ConvertUnit:data.ConvertUnit||data.Unit,
+				ConvertEnUnit:data.ConvertEnUnit||data.UnitEn||''
+			}
+		},
+		//接口获取更新后的数据
+		changeTableData(index){
+			const {IsConvert,ConvertType,ConvertValue,ConvertUnit,ConvertEnUnit,EdbInfoId} = this.updateData[index]
+			if(!IsConvert) return 
+			//计算方式是否合法
+			if(!this.checkConver(ConvertType,ConvertValue)){
+				return this.$message.warning("数据转换不合法")
+			}
+			//柱形图单独设置
+			if(this.chartInfo.ChartType===7){
+				return this.setChangeBarData(index)
+			}
+			//请求接口...
+			let dateArray=this.chartInfo.ChartType==2?this.season_year:this.select_date
+			dataBaseInterface.getChangeEdbData({
+				EdbInfoId,
+				ChartType: this.chartInfo.ChartType,
+				DateType: this.year_select,
+				StartYear:this.count_year,
+				StartDate:
+						this.year_select === 5 || this.year_select === 6
+							? dateArray[0]
+							: '',
+				EndDate: this.year_select === 5 ? dateArray[1] : '',
+				IsConvert:Number(IsConvert),
+				ConvertType,ConvertValue:Number(ConvertValue),
+				ConvertUnit,ConvertEnUnit
+			}).then(res=>{
+				if(res.Ret!==200) return 
+				const {EdbInfoList=[]} = res.Data||{}
+				if(index===this.useUnit&&this.chartInfo.ChartType===7){
+					this.chartInfo.Unit = ConvertUnit
+					this.chartInfo.UnitEn = ConvertEnUnit
+				}
+				this.tableData.splice(index,1,EdbInfoList[0])
+				//this.updateData[index] = this.formatUpdateData(this.tableData[index])
+			})
+		},
+		setChangeBarData(index){
+			const {IsConvert,ConvertType,ConvertValue,ConvertUnit,ConvertEnUnit,EdbInfoId} = this.updateData[index]
+			if(!IsConvert) return 
+			//计算方式是否合法
+			if(!this.checkConver(ConvertType,ConvertValue)){
+				return this.$message.warning("数据转换不合法")
+			}
+			//请求接口。。。
+			if(index===this.useUnit&&this.chartInfo.ChartType===7){
+				this.chartInfo.Unit = ConvertUnit
+				this.chartInfo.UnitEn = ConvertEnUnit
+			}
+			//触发tabledata的watch->触发柱形图重绘
+			//this.tableData.splice(index,1,EdbInfoList[0])
+		},
+		checkConver(type,value){
+			//对数:value>1
+			//乘除:value!=0
+			if(type===3){
+				return value>1
+			}else{
+				return value!=0
+			}
 		},
 		/* 选择指标 获取指标详情并push到表格中*/
 		selectTarget(item,type='') {
@@ -282,6 +342,8 @@ export default {
 			this.search_txt = '';
 			this.chartInfo.Unit = this.chartInfo.Unit||edb.Unit
 			this.tableData.push(edb)
+			const tempItem = this.formatUpdateData(edb)
+			this.updateData.push(tempItem)
 
 		},
 
@@ -543,6 +605,9 @@ export default {
 			if(!this.tableData.length) {
 				this.chartInfo.MarkersLines = ""
 				this.chartInfo.MarkersAreas = ""
+				this.chartInfo.Unit = ""
+				this.chartInfo.UnitEn = ""
+				this.useUnit = ''
 			}
 		},
 

+ 15 - 15
src/views/dataEntry_manage/mixins/chartPublic.js

@@ -590,10 +590,10 @@ export const chartSetMixin = {
         let yItem = {
           ...basicYAxis,
           title: {
-            text: item.Unit,
-            textCh:item.Unit, // 中文
+            text: item.ConvertUnit||item.Unit,
+            textCh:item.ConvertUnit||item.Unit, // 中文
             // 中文不存在,无论英文有无都显示空
-            textEn:item.UnitEn||item.Unit, // 英文
+            textEn:item.ConvertEnUnit||item.UnitEn||item.ConvertUnit||item.Unit, // 英文
             style:{
               ...chartTheme&&chartTheme.yAxisOptions.style
             },
@@ -767,10 +767,10 @@ export const chartSetMixin = {
         let yItem = {
           ...basicYAxis,
           title: {
-            text: item.Unit,
-            textCh:item.Unit, // 中文
+            text: item.ConvertUnit||item.Unit,
+            textCh:item.ConvertUnit||item.Unit, // 中文
             // 中文不存在,无论英文有无都显示空
-            textEn:item.UnitEn||item.Unit, // 英文
+            textEn:item.ConvertEnUnit||item.UnitEn||item.ConvertUnit||item.Unit, // 英文
             style:{
               ...chartTheme&&chartTheme.yAxisOptions.style
             },
@@ -926,10 +926,10 @@ export const chartSetMixin = {
           }
         },
         title: {
-          text:  `${chartData.Unit}`,
-          textCh:chartData.Unit, // 中文
+          text:  `${chartData.ConvertUnit||chartData.Unit}`,
+          textCh:chartData.ConvertUnit||chartData.Unit, // 中文
           // 中文不存在,无论英文有无都显示空
-          textEn:chartData.UnitEn||chartData.Unit, // 英文
+          textEn:chartData.ConvertEnUnit||chartData.UnitEn||chartData.ConvertUnit||chartData.Unit, // 英文
           style:{
             ...chartTheme&&chartTheme.yAxisOptions.style
           },
@@ -1068,10 +1068,10 @@ export const chartSetMixin = {
       let yAxis = {
         ...basicYAxis,
         title: {
-          text:  `${newval[1].Unit}`,
-          textCh:newval[1].Unit,// 中文
+          text:  `${newval[1].ConvertUnit||newval[1].Unit}`,
+          textCh:newval[1].ConvertUnit||newval[1].Unit,// 中文
           // 中文不存在,无论英文有无都显示空
-          textEn:newval[1].UnitEn||newval[1].Unit, // 英文
+          textEn:newval[1].ConvertEnUnit||newval[1].UnitEn||newval[1].ConvertUnit||newval[1].Unit, // 英文
           style:{
             ...chartTheme&&chartTheme.yAxisOptions.style
           },
@@ -1105,10 +1105,10 @@ export const chartSetMixin = {
       const xAxis = {
         ...scatterXAxis,
         title: {
-          text:  `${newval[0].Unit}`,
-          textCh:newval[0].Unit, // 中文
+          text:  `${newval[0].ConvertUnit||newval[0].Unit}`,
+          textCh:newval[0].ConvertUnit||newval[0].Unit, // 中文
           // 中文不存在,无论英文有无都显示空
-          textEn:newval[0].UnitEn||newval[0].Unit, // 英文
+          textEn:newval[0].ConvertEnUnit||newval[0].UnitEn||newval[0].ConvertUnit||newval[0].Unit, // 英文
           style: {
             ...chartTheme&&chartTheme.xAxisOptions.style
           },