|
@@ -13,17 +13,17 @@
|
|
|
<template v-if="info.fromEdbKey===5">
|
|
|
<el-radio-group
|
|
|
v-model="formData.source"
|
|
|
- @change="changeSource"
|
|
|
+ @change="()=>{ $refs.selectRef.targetTypeChange();changeSource() }"
|
|
|
>
|
|
|
<el-radio :label="1">{{$t('Edb.CalculateBtns.to_month')}}</el-radio>
|
|
|
- <el-radio :label="2">{{$t('Edb.CalculateBtns.to_quarter')}}</el-radio>
|
|
|
+ <el-radio :label="2">{{$t('Edb.CalculateBtns.to_month')}}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</template>
|
|
|
|
|
|
<template v-else-if="info.fromEdbKey===62">
|
|
|
<el-radio-group
|
|
|
v-model="formData.source"
|
|
|
- @change="changeSource"
|
|
|
+ @change="()=>{ $refs.selectRef.targetTypeChange(); changeSource() }"
|
|
|
>
|
|
|
<el-radio :label="13">{{$t('Edb.CalculateBtns.cumulate')}}</el-radio>
|
|
|
<el-radio :label="14">{{$t('Edb.CalculateBtns.cumulate_oneyear')}}</el-radio>
|
|
@@ -46,7 +46,7 @@
|
|
|
v-for="(item,index) in edbArrFromTable"
|
|
|
:key="index"
|
|
|
@click="selectTableEdbHandle(item)"
|
|
|
- >{{ item.ShowValue }}</el-tag>
|
|
|
+ >{{ item.EdbName }}</el-tag>
|
|
|
</div>
|
|
|
</section>
|
|
|
|
|
@@ -70,7 +70,6 @@
|
|
|
style="width: 100px"
|
|
|
placeholder=""
|
|
|
size="mini"
|
|
|
- @change="changeParams"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in moveTypeOpions"
|
|
@@ -87,14 +86,12 @@
|
|
|
size="mini"
|
|
|
v-model="formData.moveVal"
|
|
|
@keyup.native="filterCode(formData)"
|
|
|
- @change="changeParams"
|
|
|
></el-input>
|
|
|
<el-select
|
|
|
v-model="formData.moveUnit"
|
|
|
size="mini"
|
|
|
placeholder=""
|
|
|
style="width: 100px"
|
|
|
- @change="changeParams"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in fre_options"
|
|
@@ -112,7 +109,6 @@
|
|
|
style="width: 200px"
|
|
|
:placeholder="$t('ETableChildren.enter_n_value')"
|
|
|
type="number"
|
|
|
- @change="changeParams"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
|
|
@@ -121,7 +117,6 @@
|
|
|
v-model="formData.calendarType"
|
|
|
:placeholder="$t('OnlineExcelPage.select_calendar_pld')"
|
|
|
style="width: 200px"
|
|
|
- @change="changeParams"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in calendarOptions"
|
|
@@ -139,7 +134,6 @@
|
|
|
:placeholder="$t('OnlineExcelPage.please_select_frequency')"
|
|
|
style="width: 200px"
|
|
|
clearable
|
|
|
- @change="changeParams"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in frequencyArr"
|
|
@@ -156,7 +150,6 @@
|
|
|
v-model="formData.valueType"
|
|
|
:placeholder="$t('OnlineExcelPage.select_data_type')"
|
|
|
style="width: 200px"
|
|
|
- @change="changeParams"
|
|
|
>
|
|
|
<el-option key="期末值" :label="$t('ETableChildren.final_value_lable')" value="期末值"/>
|
|
|
<el-option key="平均值" :label="$t('ETableChildren.average_value_lable')" value="平均值"/>
|
|
@@ -168,15 +161,43 @@
|
|
|
v-model="formData.alphaValue"
|
|
|
:placeholder="$t('Edb.InputHolderAll.input_alpha_val')"
|
|
|
style="width: 200px"
|
|
|
- @change="changeParams"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</section>
|
|
|
|
|
|
+ <section>
|
|
|
+ <!-- 依赖日期选择方式 -->
|
|
|
+ <ul class="date-select-cont">
|
|
|
+ <li class="flex">
|
|
|
+ <div class="flex">
|
|
|
+ <el-radio v-model="dateSelectForm.Type" :label="1">{{$t('ETableChildren.latest_date_indicator')}}</el-radio>
|
|
|
+ <div>
|
|
|
+ <label class="el-form-item__label">{{$t('ETableChildren.lagging_period_label')}}</label>
|
|
|
+ <el-input
|
|
|
+ v-model="dateSelectForm.MoveForward"
|
|
|
+ type="number"
|
|
|
+ :min="0"
|
|
|
+ style="margin-right:10px;width:80px"
|
|
|
+ @change="e => {dateSelectForm.MoveForward=Number(e);}"
|
|
|
+ />{{$t('ETableChildren.term_ipt')}}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex">
|
|
|
+ <el-radio v-model="dateSelectForm.Type" :label="2" style="margin-left:50px">{{$t('ETableChildren.table_date_rai')}}</el-radio>
|
|
|
+ <span v-if="dateSelectForm.relationDate&&dateSelectForm.Type===2">{{dateSelectForm.relationDate}}</span>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <dateMoveWaySec ref="dateMoveWayRef"/>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </section>
|
|
|
+
|
|
|
<!-- 计算结果 -->
|
|
|
- <section class="result-section" v-if="showResult">
|
|
|
- <label>{{$t('ETableChildren.calculate_result')}}:</label>
|
|
|
+ <!-- <section class="result-section" v-if="showResult">
|
|
|
+ <label>计算结果:</label>
|
|
|
<ul class="data-cont" v-if="calculateShowData.length">
|
|
|
<li
|
|
|
v-for="(item,index) in calculateShowData"
|
|
@@ -188,12 +209,11 @@
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
- <tableNoData :text="$t('ETableChildren.no_corresponding_data')" size="mini" v-else/>
|
|
|
- </section>
|
|
|
+ <tableNoData text="无对应的数据" size="mini" v-else/>
|
|
|
+ </section> -->
|
|
|
|
|
|
<section class="bot">
|
|
|
- <el-button type="primary" @click="insertData" v-if="showResult">{{$t('OnlineExcelPage.insert_value_btn')}}</el-button>
|
|
|
- <el-button type="primary" @click="calculateHandle" v-else>{{$t('ETableChildren.calculation_btn')}}</el-button>
|
|
|
+ <el-button type="primary" @click="calculateHandle">{{$t('ETableChildren.calculation_btn')}}</el-button>
|
|
|
<el-button type="primary" plain @click="cancelHandle">{{$t('ETable.Btn.cancel_btn')}}</el-button>
|
|
|
|
|
|
</section>
|
|
@@ -207,9 +227,10 @@
|
|
|
import { dataBaseInterface } from '@/api/api.js';
|
|
|
import * as sheetInterface from "@/api/modules/sheetApi.js";
|
|
|
import * as preDictEdbInterface from '@/api/modules/predictEdbApi.js';
|
|
|
-import { resetDialogCellStyle } from "../common/customTable";
|
|
|
+import { resetDialogCellStyle,findCellByKey } from "../common/customTable";
|
|
|
import selectTarget from '@/views/chartRelevance_manage/components/selectTarget.vue';
|
|
|
import edbDetailSection from './edbDetailSection.vue';
|
|
|
+import dateMoveWaySec from './dateMoveWaySection.vue'
|
|
|
import { formRules } from '@/views/dataEntry_manage/databaseComponents/util';
|
|
|
export default {
|
|
|
props: {
|
|
@@ -220,20 +241,8 @@ export default {
|
|
|
type: Object
|
|
|
}
|
|
|
},
|
|
|
- components: { selectTarget,edbDetailSection },
|
|
|
+ components: { selectTarget,edbDetailSection,dateMoveWaySec },
|
|
|
computed: {
|
|
|
- edbArrFromTable() {
|
|
|
- let arr = this.$parent.config.data.flat().filter(_ =>_.DataType === 2);
|
|
|
- let filterArr = []
|
|
|
-
|
|
|
- arr.forEach(item => {
|
|
|
- if(filterArr.findIndex(_ => _.EdbInfoId===item.EdbInfoId)===-1) {
|
|
|
- filterArr.push(item)
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- return filterArr
|
|
|
- },
|
|
|
frequencyArr(){
|
|
|
return [
|
|
|
{label:this.$t('ETable.Date.day_lable'), value:'日度'},
|
|
@@ -275,12 +284,13 @@ export default {
|
|
|
watch: {
|
|
|
isShow(nval) {
|
|
|
if(!nval) return
|
|
|
- console.log(this.info)
|
|
|
- const { source,formStr } = this.info;
|
|
|
+
|
|
|
+ this.getTableEdbList()
|
|
|
+ const { source } = this.info;
|
|
|
|
|
|
this.formData.source = source;
|
|
|
//回显
|
|
|
- if(formStr) {
|
|
|
+ if(this.info.Value) {
|
|
|
const {
|
|
|
Source,
|
|
|
Frequency,
|
|
@@ -288,8 +298,11 @@ export default {
|
|
|
EdbInfoId,
|
|
|
MoveFrequency,
|
|
|
MoveType,
|
|
|
- Calendar
|
|
|
- } = JSON.parse(formStr);
|
|
|
+ Calendar,
|
|
|
+ DataTime,
|
|
|
+ MoveForward,
|
|
|
+ DateChange
|
|
|
+ } = JSON.parse(this.info.Value);
|
|
|
|
|
|
this.formData = {
|
|
|
source: Source,
|
|
@@ -302,7 +315,18 @@ export default {
|
|
|
valueType: Formula,
|
|
|
alphaValue: Formula,
|
|
|
}
|
|
|
+
|
|
|
+ this.dateSelectForm = {
|
|
|
+ Type: DataTime ? 2 : 1,
|
|
|
+ MoveForward: MoveForward || 0,
|
|
|
+ relationUid: this.info.DataTime ? this.getRelationCellKey() : '',
|
|
|
+ relationDate: this.info.DataTime ? this.getNewCellDate() : '',//日期会动态更新 需要找关联单元格最新的数据
|
|
|
+ }
|
|
|
this.selectTableEdbHandle({EdbInfoId})
|
|
|
+
|
|
|
+ this.$nextTick(() => {
|
|
|
+ DateChange&&this.$refs.dateMoveWayRef.initData(DateChange)
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -322,6 +346,7 @@ export default {
|
|
|
},
|
|
|
formRules,
|
|
|
|
|
|
+ edbArrFromTable: [],
|
|
|
|
|
|
showResult: false,
|
|
|
calculateShowData: [], //计算全部数据
|
|
@@ -334,13 +359,55 @@ export default {
|
|
|
selectEdbInfo: null,
|
|
|
|
|
|
|
|
|
-
|
|
|
+ dateSelectForm: {
|
|
|
+ Type:1,
|
|
|
+ MoveForward: 0,
|
|
|
+ relationDate: '',//关联的表格日期
|
|
|
+ relationUid: '',//关联格子的uid
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
mounted(){
|
|
|
|
|
|
},
|
|
|
methods:{
|
|
|
+ /* 获取表格中关联的表格列表 单元格2 5 7*/
|
|
|
+ async getTableEdbList() {
|
|
|
+ let arr = this.$parent.config.data.flat().filter(_ =>[2,5,7].includes(_.DataType)).map(_ => _.EdbInfoId);
|
|
|
+ let filterArr = Array.from(new Set(arr));
|
|
|
+
|
|
|
+ if(!filterArr.length) return
|
|
|
+
|
|
|
+ let res = await sheetInterface.getEdbBaseInfo({EdbInfoIds: filterArr.join(',')})
|
|
|
+ if(res.Ret !==200) return
|
|
|
+
|
|
|
+ this.edbArrFromTable = res.Data.List;
|
|
|
+ },
|
|
|
+
|
|
|
+ // 在选择表格中日期的话在弹窗中显示所选日期 关联uid
|
|
|
+ changeRleationDate(cell) {
|
|
|
+ this.dateSelectForm.relationDate=cell.DataType===1 ? cell.ShowValue : '';
|
|
|
+ this.dateSelectForm.relationUid=this.dateSelectForm.relationDate ? cell.Uid : '';
|
|
|
+ },
|
|
|
+
|
|
|
+ /* 找日期关联的key 本来想存在单元格内部后端不想动原来结构 还是自己根据关联关系找吧 */
|
|
|
+ getRelationCellKey() {
|
|
|
+ let relationObj = this.$parent.insertRelationArr.find(_=> _.key === this.info.Uid)
|
|
|
+ if(!relationObj) return ''
|
|
|
+
|
|
|
+ return relationObj.relation_date.key
|
|
|
+ },
|
|
|
+
|
|
|
+ /* 先找关联日期的key 再根据key找单元格数据取到最新的日期 */
|
|
|
+ getNewCellDate() {
|
|
|
+ let relationKey = this.getRelationCellKey();
|
|
|
+ if(!relationKey) return '';
|
|
|
+
|
|
|
+ let relationDateCell = findCellByKey(this.$parent.config.data,relationKey)
|
|
|
+
|
|
|
+ return relationDateCell.ShowValue
|
|
|
+ },
|
|
|
+
|
|
|
/* 计算结果 */
|
|
|
async calculateHandle() {
|
|
|
await this.$refs.form.validate();
|
|
@@ -360,7 +427,10 @@ export default {
|
|
|
'alpha': 'alphaValue'
|
|
|
}
|
|
|
|
|
|
- let DataTime = this.$parent.selectCell.DataType === 1 ? this.$parent.selectCell.ShowValue : ''
|
|
|
+ let DataTime = '';
|
|
|
+ if(this.dateSelectForm.Type===2) { //选框为表格日期再去取Date
|
|
|
+ DataTime = this.dateSelectForm.relationDate
|
|
|
+ }
|
|
|
|
|
|
let params = {
|
|
|
DataTime,
|
|
@@ -370,43 +440,29 @@ export default {
|
|
|
EdbInfoId: this.selectEdbInfo.EdbInfoId,
|
|
|
MoveFrequency: moveUnit,
|
|
|
MoveType: moveType,
|
|
|
- Calendar: calendarType
|
|
|
+ Calendar: calendarType,
|
|
|
+ MoveForward: this.dateSelectForm.MoveForward,
|
|
|
+ DateChange: this.$refs.dateMoveWayRef.dateChangeArr,
|
|
|
}
|
|
|
|
|
|
const res = await sheetInterface.getMixedCalculateData(params)
|
|
|
if(res.Ret!==200) return
|
|
|
|
|
|
this.showResult = true;
|
|
|
- this.calculateShowData = res.Data.List || [];
|
|
|
-
|
|
|
- // if(!this.calculateShowData.length && DataTime) return this.$message.warning('所选指标所选日期无值')
|
|
|
-
|
|
|
- let InsertValue = this.calculateShowData.length
|
|
|
- ? (this.calculateShowData.find(_ => _.DataTime===DataTime) ? this.calculateShowData.find(_ => _.DataTime===DataTime).Value.toString() : this.calculateShowData[0].Value.toString())
|
|
|
- : ''
|
|
|
- this.chooseItem = {
|
|
|
- Date:DataTime,
|
|
|
- EdbInfoId: this.selectEdbInfo.EdbInfoId,
|
|
|
- InsertValue,
|
|
|
- Str: JSON.stringify(params)
|
|
|
- }
|
|
|
|
|
|
- },
|
|
|
-
|
|
|
- /* 已计算过改参数重新计算 */
|
|
|
- changeParams() {
|
|
|
- this.showResult && this.calculateHandle()
|
|
|
- },
|
|
|
-
|
|
|
- /* 插入值 */
|
|
|
- insertData() {
|
|
|
+ this.chooseItem = {
|
|
|
+ relationDate: DataTime,
|
|
|
+ relationUid: this.dateSelectForm.Type===2 ? this.dateSelectForm.relationUid : '',
|
|
|
+ EdbInfoId: this.selectEdbInfo.EdbInfoId,
|
|
|
+ InsertValue: res.Data.ShowValue||"",
|
|
|
+ Str: JSON.stringify(params)
|
|
|
+ }
|
|
|
|
|
|
- // if(this.$parent.selectCell.DataType !== 1) return this.$message.warning('请在表格中选择日期')
|
|
|
-
|
|
|
- if(!this.calculateShowData.length) return this.$message.warning(this.$t('OnlineExcelPage.there_data_no_msg') )
|
|
|
+ // if(!this.calculateShowData.length) return this.$message.warning('该日期无数据')
|
|
|
|
|
|
this.$emit('insert',this.chooseItem)
|
|
|
this.cancelHandle();
|
|
|
+
|
|
|
},
|
|
|
|
|
|
/* 选择指标 */
|
|
@@ -438,9 +494,9 @@ export default {
|
|
|
const { EdbInfoId,EdbInfoType,EdbName,Frequency } = res.Data;
|
|
|
|
|
|
if(this.formData.source===1&&Frequency!=='月度') return this.$message.warning(this.$t('ETableChildren.only_select_msg') )
|
|
|
- else if(this.formData.source===2&&Frequency!=='季度') return this.$message.warning(this.$t('ETableChildren.no_quarterly_msg') )
|
|
|
- else if(this.formData.source===8&&Frequency==='日度') return this.$message.warning(this.$t('ETableChildren.no_day_msg') )
|
|
|
- else if(this.formData.source===14&&Frequency==='年度') return this.$message.warning(this.$t('ETableChildren.no_year_msg') )
|
|
|
+ else if(this.formData.source===2&&Frequency!=='季度') return this.$message.warning(this.$t('ETableChildren.no_quarterly_msg'))
|
|
|
+ else if(this.formData.source===8&&Frequency==='日度') return this.$message.warning(this.$t('ETableChildren.no_day_msg'))
|
|
|
+ else if(this.formData.source===14&&Frequency==='年度') return this.$message.warning(this.$t('ETableChildren.no_year_msg'))
|
|
|
|
|
|
|
|
|
this.search_edb = EdbName;
|
|
@@ -470,6 +526,8 @@ export default {
|
|
|
calendarType: '公历',
|
|
|
valueType: '期末值'
|
|
|
}
|
|
|
+ this.dateSelectForm = {Type:1,MoveForward: 0,relationDate: '',relationUid: ''}
|
|
|
+ this.$refs.dateMoveWayRef&&this.$refs.dateMoveWayRef.initData();
|
|
|
},
|
|
|
|
|
|
cancelHandle() {
|
|
@@ -540,6 +598,16 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .date-select-cont {
|
|
|
+ li {
|
|
|
+ margin: 20px 0;
|
|
|
+ }
|
|
|
+ .flex {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|