|
@@ -58,7 +58,7 @@
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :span="6" style="text-align: left">
|
|
|
- <a-button type="primary" html-type="submit" @click="onSelect">查询预览</a-button>
|
|
|
+ <a-button type="primary" html-type="submit" @click="getQuery">查询预览</a-button>
|
|
|
<a-button html-type="submit" @click="onFinish" style="margin-left: 10px;">保存模板</a-button>
|
|
|
</a-col>
|
|
|
<a-col :span="18">
|
|
@@ -103,12 +103,7 @@
|
|
|
</a-form>
|
|
|
</div>
|
|
|
<div class="query-index-table">
|
|
|
- <a-table :columns="columns" :data-source="dataList" :scroll="{ x:'100%', y: 500 }"
|
|
|
- :pagination="pagination"
|
|
|
- :loading="modal.loading"
|
|
|
- @change="pageChange"
|
|
|
- bordered>
|
|
|
- </a-table>
|
|
|
+ <DisplayTable ref="display" :bases="formState.bases" :measures="formState.measures" @displayChange="onDisplayChange"></DisplayTable>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -121,20 +116,19 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
|
-import {ref, defineComponent, computed} from 'vue';
|
|
|
+import {ref, defineComponent} from 'vue';
|
|
|
import type {FormInstance} from 'ant-design-vue';
|
|
|
import {useRoute} from 'vue-router';
|
|
|
import DragWhere from '@/components/basic/query/drag-where.vue'
|
|
|
import DragBase from '@/components/basic/query/drag-base.vue'
|
|
|
import DragMeasure from '@/components/basic/query/drag-measure.vue'
|
|
|
+import DisplayTable from '@/components/basic/query/display-table.vue'
|
|
|
import {save, get} from "@/api/common";
|
|
|
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
|
|
|
import type { TreeProps } from 'ant-design-vue';
|
|
|
-import {getPaginationTotalTitle} from "@/utils/common";
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'queryindex',
|
|
|
- components: {DragWhere, DragBase, DragMeasure},
|
|
|
+ components: {DragWhere, DragBase, DragMeasure, DisplayTable},
|
|
|
setup() {
|
|
|
const route = useRoute();
|
|
|
const expand = ref(false);
|
|
@@ -142,12 +136,14 @@ export default defineComponent({
|
|
|
const measure = ref<typeof DragMeasure>();
|
|
|
const base = ref<typeof DragBase>();
|
|
|
const where = ref<typeof DragWhere>();
|
|
|
+ const display = ref<typeof DisplayTable>();
|
|
|
|
|
|
const subjectTrees = ref({
|
|
|
data :[] as TreeProps['treeData'],
|
|
|
expandedKeys : [''],
|
|
|
searchStr : ''
|
|
|
});
|
|
|
+
|
|
|
const formState = ref({
|
|
|
temp : {
|
|
|
tempId: '',
|
|
@@ -163,37 +159,14 @@ export default defineComponent({
|
|
|
measures : [],
|
|
|
wheres : [],
|
|
|
bases : [],
|
|
|
- page: 0, rows: 10, total: 0,
|
|
|
- orderBy : null,
|
|
|
- orderByString : null
|
|
|
+ pagination : null
|
|
|
});
|
|
|
|
|
|
const modal = ref({
|
|
|
open : false,
|
|
|
- sqlString : null,
|
|
|
- loading : false
|
|
|
+ sqlString : null
|
|
|
});
|
|
|
|
|
|
- const pagination = computed(() => ({
|
|
|
- total: formState.value.total,
|
|
|
- current: formState.value.page,
|
|
|
- pageSize: formState.value.rows,
|
|
|
- showSizeChanger: true,
|
|
|
- showTotal: total => getPaginationTotalTitle(total)
|
|
|
- }));
|
|
|
-
|
|
|
- const pageChange: TableProps['onChange'] = (
|
|
|
- pag: { pageSize: number; current: number } , filters: any, sorter: any
|
|
|
- ) => {
|
|
|
- formState.value.page = pag.current;
|
|
|
- formState.value.rows = pag.pageSize;
|
|
|
- console.log("sorter",sorter, filters);
|
|
|
-
|
|
|
- formState.value.orderBy = sorter.column ? sorter.columnKey : null;
|
|
|
- formState.value.orderByString = sorter.column ? sorter.order.replace("end","") : null;
|
|
|
- onSelect();
|
|
|
- };
|
|
|
-
|
|
|
const onFinish = () => {
|
|
|
if(formRef.value == undefined){
|
|
|
return;
|
|
@@ -210,26 +183,21 @@ export default defineComponent({
|
|
|
formState.value.measures = (measure.value as any).getTagList();
|
|
|
formState.value.wheres = (where.value as any).getTagList();
|
|
|
formState.value.bases = (base.value as any).getTagList();
|
|
|
+ //从视图取得翻页数据
|
|
|
+ formState.value.pagination = (display.value as any).getPagination();
|
|
|
console.log("formState", formState.value);
|
|
|
-
|
|
|
return formState.value;
|
|
|
};
|
|
|
|
|
|
- const onSelect= () =>{
|
|
|
- modal.value.loading = true;
|
|
|
-
|
|
|
+ const getQuery = () =>{
|
|
|
save('temp/genQuery', formStateGet()).then(result => {
|
|
|
console.log(result);
|
|
|
if(result["code"]!=0){
|
|
|
modal.value.open = true;
|
|
|
modal.value.sqlString = result["sqlString"];
|
|
|
- dataList.value = [];
|
|
|
- }
|
|
|
- else{
|
|
|
- dataList.value = result["rows"];
|
|
|
- formState.value.total = result["total"];
|
|
|
- modal.value.loading = false;
|
|
|
}
|
|
|
+ //将数据给视图,视图组装并显示
|
|
|
+ (display.value as any).setData(result);
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -262,7 +230,8 @@ export default defineComponent({
|
|
|
formState.value.bases = rtn.bases;
|
|
|
formState.value.wheres = rtn.wheres;
|
|
|
formState.value.measures = rtn.measures;
|
|
|
- readerTable(true);
|
|
|
+
|
|
|
+ setTimeout(displayReader, 100);
|
|
|
|
|
|
(measure.value as any).setTagList(rtn.measures);
|
|
|
(where.value as any).setTagList(rtn.wheres);
|
|
@@ -272,22 +241,35 @@ export default defineComponent({
|
|
|
const onChangeMeasure = (list, obj) => {
|
|
|
console.log("onChangeMeasure", arguments, list, obj);
|
|
|
formState.value.measures = list;
|
|
|
- readerTable(true);
|
|
|
+ displayReader();
|
|
|
checkSubjectId(obj);
|
|
|
}
|
|
|
const onChangeWhere = (list, obj) => {
|
|
|
console.log("onChangeWhere", arguments, list, obj);
|
|
|
formState.value.wheres = list;
|
|
|
- readerTable(true);
|
|
|
+ displayReader();
|
|
|
checkSubjectId(obj);
|
|
|
}
|
|
|
const onChangeBase = (list, obj) => {
|
|
|
console.log("onChangeBase", arguments, list, obj);
|
|
|
formState.value.bases = list;
|
|
|
- readerTable(true);
|
|
|
+ displayReader();
|
|
|
checkSubjectId(obj);
|
|
|
}
|
|
|
|
|
|
+ const onDisplayChange = (pagination) => {
|
|
|
+ //视图发起数据查询,如翻页
|
|
|
+ console.log("onDisplayChange", pagination);
|
|
|
+ formState.value.pagination = pagination;
|
|
|
+ getQuery();
|
|
|
+ }
|
|
|
+
|
|
|
+ function displayReader(){
|
|
|
+ //初始化视图显示
|
|
|
+ console.log("displayReader",display.value);
|
|
|
+ (display.value as any).reader();
|
|
|
+ }
|
|
|
+
|
|
|
const checkSubjectId = (obj)=>{
|
|
|
if(formState.value.temp.subId==null && obj!=null) {
|
|
|
formState.value.temp.subId = obj.subId;
|
|
@@ -302,32 +284,6 @@ export default defineComponent({
|
|
|
console.log("formState.value.temp.subId", formState.value.temp.subId)
|
|
|
}
|
|
|
|
|
|
- const dataList = ref([]);
|
|
|
- const columns : any= ref([]);
|
|
|
- const readerTable = (isClearData : boolean) =>{
|
|
|
- columns.value = getTableColumns(formState.value.bases, formState.value.measures);
|
|
|
- if(isClearData) {
|
|
|
- dataList.value = [];
|
|
|
- formState.value.page = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- const getTableColumns = (bases, measures) =>{
|
|
|
- let rtns: TableColumnsType = [];
|
|
|
- let cols = bases.concat(measures);
|
|
|
- for(let i=0;i<cols.length; i++){
|
|
|
- let it = cols[i];
|
|
|
- console.log("getTableColumns",it);
|
|
|
- rtns.push({
|
|
|
- title: it.displayName?it.displayName:it.fieldName,
|
|
|
- dataIndex: "RENAME" + i,
|
|
|
- key: it.tempFeildId,
|
|
|
- sorter: true,
|
|
|
- align:"center"});
|
|
|
- }
|
|
|
- console.log("getTableColumns", rtns);
|
|
|
- return rtns;
|
|
|
- }
|
|
|
-
|
|
|
const labelCol = { style: { width: '100px' } };
|
|
|
return {
|
|
|
route,
|
|
@@ -339,21 +295,20 @@ export default defineComponent({
|
|
|
measure,
|
|
|
where,
|
|
|
base,
|
|
|
+ display,
|
|
|
onChangeMeasure,
|
|
|
onChangeWhere,
|
|
|
onChangeBase,
|
|
|
onDragStart,
|
|
|
checkSubjectId,
|
|
|
- onSelect,
|
|
|
+ getQuery,
|
|
|
getTemp,
|
|
|
|
|
|
- dataList,
|
|
|
- columns,
|
|
|
subjectTrees,
|
|
|
getSubjectTree,
|
|
|
modal,
|
|
|
- pagination,
|
|
|
- pageChange
|
|
|
+ displayReader,
|
|
|
+ onDisplayChange
|
|
|
};
|
|
|
},
|
|
|
created() {
|