Browse Source

修改时间轴视图

lwx_15
超级管理员 1 year ago
parent
commit
120651db2e
  1. 8
      src/api/DesignForm/requestapi.ts
  2. 27
      src/components/DesignForm/app/index.vue
  3. 148
      src/components/DesignForm/app/timeAxis.vue
  4. 20
      src/types/components.d.ts

8
src/api/DesignForm/requestapi.ts

@ -561,3 +561,11 @@ export function gainListTableField(data: any) {
data: data
});
}
//多视图数据处理
export function multiViewPage(data: any) {
return request({
url: '/systemapi/customer_form/multiViewPage',
method: 'post',
data: data
});
}

27
src/components/DesignForm/app/index.vue

@ -294,7 +294,12 @@ watch(()=>props.formId,(val:any)=>{
})
const timeAxisRef = ref(null)
const searchSend = reactive({
formId:props.formId,
page:state.currentPage,
pagesize:state.pageSize,
searchData:json2string(props.searchData)
})
/**
@ 作者: 秦东
@ -303,13 +308,13 @@ const timeAxisRef = ref(null)
*/
const getPageData = () => {
let sendData = {
formId:props.formId,
page:state.currentPage,
pagesize:state.pageSize,
searchData:json2string(props.searchData)
}
console.log("获取列表详细信息",sendData)
// let sendData = {
// formId:props.formId,
// page:state.currentPage,
// pagesize:state.pageSize,
// searchData:json2string(props.searchData)
// }
// console.log("",sendData)
switch(viewType.value){
@ -318,7 +323,7 @@ const getPageData = () => {
case 3:
nextTick(()=>{
console.log("获取列表详细信息-------222---------->",timeAxisRef.value)
timeAxisRef.value.searchTimeList(sendData)
// timeAxisRef.value.searchTimeList(searchSend)
})
break;
@ -328,7 +333,7 @@ const getPageData = () => {
break;
default:
state.loading = true;
gainFormPageListCont(sendData)
gainFormPageListCont(searchSend)
.then((data)=>{
console.log("获取列表详细信息----------------->",data)
tableDataList.value = data.data.list
@ -851,7 +856,7 @@ const tabsView = (val:any,types:number) => {
</el-col>
<el-col v-if="viewType==3" :span="24">
<TimeAxisPage ref="timeAxisRef" :data="tableDataList" :view-layout="viewLayout" :columns-filter="columnsFilter" />
<TimeAxisPage ref="timeAxisRef" :data="tableDataList" :view-layout="viewLayout" :columns-filter="columnsFilter" :search-send="searchSend" />
</el-col>

148
src/components/DesignForm/app/timeAxis.vue

@ -4,7 +4,10 @@
@ 备注: 自定义应用时间轴视图
-->
<script lang='ts' setup>
import { multiViewPage } from '@/api/DesignForm/requestapi'
import {
json2string
} from '@/utils/DesignForm/form'
const props = defineProps({
data:{
type:Object,
@ -23,6 +26,12 @@ const props = defineProps({
default(){
return {}
}
},
searchSend:{
type:Object,
default(){
return {}
}
}
});
@ -32,17 +41,25 @@ const noMore = ref(false)
const timeDisabled = computed(() => noMore.value || loadTimePage.value)
let chuDiNumber = 0
const loadTimeLog = () =>{
noMore.value = true
loadTimePage.value = true
chuDiNumber ++
console.log("触底次数",chuDiNumber)
console.log("触底次数",chuDiNumber,loadTimePage.value)
if(loadTimePage.value){
props.searchSend.page= chuDiNumber
searchTimeList(props.searchSend)
}
}
const total = ref<number>(0)
const count = ref<number>(0)
const timeInfoList = ref<any[]>([])
/**
@ 作者: 秦东
@ 时间: 2024-07-08 13:11:43
@ 功能: 时间轴数据搜索
*/
const searchTimeList = (val:any) =>{
loadTimePage.value = true
console.log("时间轴数据搜索",val)
console.log("时间轴数据搜索--->",props.columnsFilter)
val.viewClass = {
@ -54,17 +71,125 @@ const searchTimeList = (val:any) =>{
dayType:"",
mapWord:""
}
console.log("时间轴数据搜索-11111-->",timeInfoList.value.length)
if(timeInfoList.value.length > 0){
val.oldData = json2string(timeInfoList.value)
}else{
val.oldData = ""
}
multiViewPage(val)
.then((data:any) =>{
console.log("时间轴数据搜索--1->",data)
total.value = data.data.total
count.value = data.data.count
timeInfoList.value = data.data.list
if(data.data.count == val.pagesize){
noMore.value = false
}else{
noMore.value = true
}
})
.finally(()=>{
nextTick(()=>{
loadTimePage.value = false
})
})
}
defineExpose({
searchTimeList
})
/**
@ 作者: 秦东
@ 时间: 2024-07-09 16:21:03
@ 功能: 判断当前值
*/
const judgeGainVal = (key:string,val:any) => {
console.log("判断当前值--1->",val)
if(val[key]){
return val[key]
}
return ""
// console.log("--3->",val[key])
// if(val){
// val.forEach((item,index)=>{
// console.log("--3->",item,index)
// })
// }
}
/**
@ 作者: 秦东
@ 时间: 2024-07-09 16:32:06
@ 功能: 要显示得字段
*/
const showWork = computed(() => {
let ary = [];
if(props.columnsFilter){
props.columnsFilter.forEach((item)=>{
if(item.fieldClass != "-" && item.fieldClass != "__control"){
ary.push(item)
}
})
}
return ary
})
</script>
<template>
<ul v-infinite-scroll="loadTimeLog" class="infinite-list" :infinite-scroll-disabled="timeDisabled">
{{viewLayout}}
<el-timeline :reverse="true" class="timeLineStyle">
<el-timeline-item center v-for="(item,index) in props.data" :key="index" :hollow="index%3==0" :type="index%3==0?'primary':''" :icon="index%3==0?'':'MoreFilled'" :size="index%3==0?'large':''">
<!-- {{viewLayout}} -->
<el-timeline :reverse="true" class="timeLineStyle" >
<el-timeline-item center v-for="(item,sunIndex) in timeInfoList" :key="index" :hollow="item.class_type$unit==1" :type="item.class_type$unit==1?'primary':''" :icon="item.class_type$unit==1?'':'MoreFilled'" :size="item.class_type$unit==1?'large':''">
<div class="timeLeft" v-if="item.class_type$unit==1">
<table>
<tr>
<td rowspan="2">
<el-text class="leftDay">{{item.day}}</el-text>
</td>
<td >
<el-text>{{item.weekDay}}</el-text>
</td>
</tr>
<tr>
<td >
<el-text>{{item.dateTime}}</el-text>
</td>
</tr>
</table>
</div>
<div class="leftCont" v-if="item.class_type$unit==1">
</div>
<el-card v-if="item.class_type$unit!=1">
<el-descriptions
class="margin-top"
title=""
:column="3"
border
>
<el-descriptions-item v-for="itemField in showWork" :label="itemField.label" >
{{judgeGainVal(itemField.field,item)}}
</el-descriptions-item>
</el-descriptions>
<!-- <div v-for="itemField in props.columnsFilter" >
<div v-if="itemField.fieldClass!='-'&&itemField.fieldClass!='__control'">
{{itemField.label}}:{{judgeGainVal(itemField.field,item)}}
</div>
</div> -->
</el-card>
</el-timeline-item>
<!-- <el-timeline-item center v-for="(item,index) in props.data" :key="index" :hollow="index%3==0" :type="index%3==0?'primary':''" :icon="index%3==0?'':'MoreFilled'" :size="index%3==0?'large':''">
<div class="timeLeft" v-if="index%3==0">
<table>
<tr>
@ -86,10 +211,13 @@ defineExpose({
</div>
<el-card v-if="index%3!=0">
<h4>Update Github template</h4>
<p v-for="item in props.columnsFilter">{{item.fieldClass}}</p>
<div v-for="item in props.columnsFilter" >
<div v-if="item.fieldClass!='-'&&item.fieldClass!='__control'">
{{item.label}}{{item.fieldClass!='-'}}
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline-item> -->
</el-timeline>
<p v-if="loadTimePage">Loading...</p>
<p v-if="noMore">数据已全部展示</p>

20
src/types/components.d.ts

@ -26,7 +26,6 @@ declare module '@vue/runtime-core' {
DragControlApp: typeof import('./../components/DesignForm/dragControlApp.vue')['default']
DragControlNew: typeof import('./../components/DesignForm/dragControlNew.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix']
ElAlert: typeof import('element-plus/es')['ElAlert']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
@ -36,7 +35,6 @@ declare module '@vue/runtime-core' {
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
@ -61,7 +59,6 @@ declare module '@vue/runtime-core' {
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
@ -69,7 +66,6 @@ declare module '@vue/runtime-core' {
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
@ -77,7 +73,6 @@ declare module '@vue/runtime-core' {
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSelectV2: typeof import('element-plus/es')['ElSelectV2']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElStep: typeof import('element-plus/es')['ElStep']
@ -94,7 +89,6 @@ declare module '@vue/runtime-core' {
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
@ -125,26 +119,12 @@ declare module '@vue/runtime-core' {
HeadToolsNew: typeof import('./../components/DesignForm/public/headToolsNew.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpCollection: typeof import('~icons/ep/collection')['default']
IEpDelete: typeof import('~icons/ep/delete')['default']
IEpDownload: typeof import('~icons/ep/download')['default']
IEpEdit: typeof import('~icons/ep/edit')['default']
IEpMessageBox: typeof import('~icons/ep/message-box')['default']
IEpMinus: typeof import('~icons/ep/minus')['default']
IEpOperation: typeof import('~icons/ep/operation')['default']
IEpPicture: typeof import('~icons/ep/picture')['default']
IEpPlus: typeof import('~icons/ep/plus')['default']
IEpPosition: typeof import('~icons/ep/position')['default']
IEpRefresh: typeof import('~icons/ep/refresh')['default']
IEpRefreshLeft: typeof import('~icons/ep/refresh-left')['default']
IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
IEpTop: typeof import('~icons/ep/top')['default']
IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
IEpUser: typeof import('~icons/ep/user')['default']
IEpView: typeof import('~icons/ep/view')['default']
LangSelect: typeof import('./../components/LangSelect/index.vue')['default']
LayoutPage: typeof import('./../components/DesignForm/layoutPage/index.vue')['default']
List: typeof import('./../components/DesignForm/public/form/components/list.vue')['default']

Loading…
Cancel
Save