|
@@ -64,15 +64,19 @@
|
|
|
:data-key="cell.Uid"
|
|
|
:data-rindex="rowHeader[index]"
|
|
|
:data-cindex="columnHeader[cell_index]"
|
|
|
+ :highlight-first-item="cell.DataType===2"
|
|
|
@select="selectTarget($event,cell)"
|
|
|
@click="clickCell($event, cell)"
|
|
|
@change.native="changeVal($event, cell)"
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
<edbDetailPopover :info="scope.item">
|
|
|
- <div slot="reference">
|
|
|
- {{ scope.item.EdbName }}
|
|
|
+ <div slot="reference" v-if="cell.DataType===2" class="edb-item">
|
|
|
+ <span class="edb-item-name text_oneLine">{{ scope.item.EdbName }}</span>
|
|
|
+ <i class="el-icon-check" style="color:#0052D9;font-size:18px;"/>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div slot="reference" v-else>{{ scope.item.EdbName }}</div>
|
|
|
</edbDetailPopover>
|
|
|
</template>
|
|
|
</el-autocomplete>
|
|
@@ -109,9 +113,11 @@ import {
|
|
|
checkDateFormat,
|
|
|
setFocus,
|
|
|
findCellByKey,
|
|
|
- resetRelationStyle
|
|
|
+ resetRelationStyle,
|
|
|
+ resetDialogCellStyle
|
|
|
} from "../common/customTable";
|
|
|
import * as sheetInterface from "@/api/modules/sheetApi.js";
|
|
|
+import { dataBaseInterface } from '@/api/api.js';
|
|
|
import md5 from '@/utils/md5.js';
|
|
|
import selectTargetValueDia from './selectTargetValueDia.vue';
|
|
|
export default {
|
|
@@ -160,17 +166,21 @@ export default {
|
|
|
methods: {
|
|
|
|
|
|
async searchTarget(query,cb) {
|
|
|
- if(!query) return cb([])
|
|
|
- // cb([])
|
|
|
+ if(!query||checkDateFormat(query)) return cb([])
|
|
|
|
|
|
- const res = await sheetInterface.searchTarget({
|
|
|
- KeyWord: query,
|
|
|
- CurrentIndex: 1,
|
|
|
- PageSize: 1000
|
|
|
- })
|
|
|
+ const { DataType,EdbInfoId } = this.selectCell;
|
|
|
+
|
|
|
+ const res = DataType===2
|
|
|
+ ? await dataBaseInterface.targetDetail({EdbInfoId})
|
|
|
+ : await sheetInterface.searchTarget({
|
|
|
+ KeyWord: query,
|
|
|
+ CurrentIndex: 1,
|
|
|
+ PageSize: 1000
|
|
|
+ })
|
|
|
if(res.Ret !== 200) return
|
|
|
|
|
|
- cb(res.Data.List)
|
|
|
+ let arr = DataType===2 ? [res.Data] : (res.Data.List||[])
|
|
|
+ cb(arr);
|
|
|
},
|
|
|
|
|
|
/* 单击 */
|
|
@@ -183,7 +193,7 @@ export default {
|
|
|
setFocus(e);
|
|
|
|
|
|
//插入值时寻找关联依赖的单元格 设置选框
|
|
|
- if(cell.DataType === 4) {
|
|
|
+ if([4,5].includes(cell.DataType)) {
|
|
|
const { key } = e.target.dataset;
|
|
|
if(!this.insertRelationArr.find(_ => _.key===key)) return
|
|
|
let { relation_date,relation_edb } = this.insertRelationArr.find(_ => _.key===key)
|
|
@@ -303,16 +313,20 @@ export default {
|
|
|
|
|
|
},
|
|
|
|
|
|
- /* 选择指标 单元格类型为2*/
|
|
|
+ /* 选择指标 单元格类型为2 已经是指标单元格了就重置单元格 否则就视为选择指标*/
|
|
|
selectTarget(e,cell) {
|
|
|
const { EdbName,EdbInfoId } = e;
|
|
|
|
|
|
- cell.DataType = 2;
|
|
|
- cell.DataTime = '';
|
|
|
- cell.ShowValue = EdbName;
|
|
|
- cell.Value = EdbName;
|
|
|
- cell.EdbInfoId = EdbInfoId;
|
|
|
-
|
|
|
+ //如果已经是指标单元格了再次点击就清空
|
|
|
+ if(cell.DataType===2&&cell.EdbInfoId) {
|
|
|
+ this.clearCell()
|
|
|
+ }else {
|
|
|
+ cell.DataType = 2;
|
|
|
+ cell.DataTime = '';
|
|
|
+ cell.ShowValue = EdbName;
|
|
|
+ cell.Value = EdbName;
|
|
|
+ cell.EdbInfoId = EdbInfoId;
|
|
|
+ }
|
|
|
|
|
|
this.checkCellRelation(cell)
|
|
|
},
|
|
@@ -374,7 +388,7 @@ export default {
|
|
|
//刷新插入值结果
|
|
|
let params = null;
|
|
|
if(relation_date.key === key && cell.DataType === 1) { //修改的是依赖日期格
|
|
|
- let { EdbInfoId } = findCellByKey(this.config.data,relation_edb.key)
|
|
|
+ let { EdbInfoId } = findCellByKey(this.config.data,relation.key)
|
|
|
params = {
|
|
|
EdbInfoId,
|
|
|
Date: cell.ShowValue
|
|
@@ -396,7 +410,7 @@ export default {
|
|
|
res.Data && this.config.data.forEach(row => {
|
|
|
row.forEach(cell => {
|
|
|
if(cell.Uid === relation.key) {
|
|
|
- cell.DataType = 4;
|
|
|
+ cell.DataType = relation.type;
|
|
|
cell.ShowValue = res.Data;
|
|
|
cell.Value = res.Data;
|
|
|
cell.EdbInfoId = params.EdbInfoId;
|
|
@@ -491,18 +505,29 @@ export default {
|
|
|
打开弹窗后仍可以在页面上点击 多存一个选择指标时的信息 */
|
|
|
selectTargetOpen() {
|
|
|
this.insertTargetCell = this.selectCell;
|
|
|
+ resetDialogCellStyle();
|
|
|
+ setRelationStyle({ key:this.insertTargetCell.Uid },'td-choose-insert-target')
|
|
|
this.isSelectTargetValueDialog = true;
|
|
|
},
|
|
|
|
|
|
/* 插入选择指标的值 */
|
|
|
insertSelectData({ edbId,value }) {
|
|
|
- // let { key } = this.insertTargetCell;
|
|
|
+
|
|
|
this.insertTargetCell.DataType = 5;
|
|
|
this.insertTargetCell.ShowValue = value;
|
|
|
this.insertTargetCell.Value = value;
|
|
|
this.insertTargetCell.EdbInfoId = edbId;
|
|
|
|
|
|
- // console.log(this.insertTargetCell)
|
|
|
+ //建立新的关联关系
|
|
|
+ let relation = {
|
|
|
+ insert_cell: {
|
|
|
+ key: this.insertTargetCell.Uid,
|
|
|
+ relation_date: this.selectCell.Uid,
|
|
|
+ relation_edb: '',
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.setRelation(relation,5);
|
|
|
|
|
|
},
|
|
|
|
|
@@ -707,8 +732,17 @@ export default {
|
|
|
border-left: none;
|
|
|
border-right: none;
|
|
|
}
|
|
|
- &.insert {
|
|
|
- background: #ffefdd;
|
|
|
+ &.td-choose-insert-target::after {
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ content: "";
|
|
|
+ display: block;
|
|
|
+ outline: 0;
|
|
|
+ border: 2px dashed orange;
|
|
|
+ box-shadow: 0 0 5px rgba(73, 177, 249, 0.5);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -778,5 +812,13 @@ export default {
|
|
|
}
|
|
|
.edb-select-popover {
|
|
|
width: 300px !important;
|
|
|
+ .edb-item {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ .edb-item-name {
|
|
|
+ max-width: 260px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|