Browse Source

增加分组视图页面

qin_s4
han2015 1 month ago
parent
commit
b792d045a8
  1. 6
      src/api/DesignForm/tableButton.ts
  2. 236
      src/components/DesignForm/app/groupPage.vue
  3. 54
      src/components/DesignForm/app/index.vue
  4. 18
      src/components/DesignForm/tableListPage/index.vue
  5. 18
      src/directive/permission/button.ts
  6. 7
      src/views/sysworkflow/lowCodeTasks/index.vue
  7. 9
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/openAppFormPage.vue
  8. 73
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageList.vue
  9. 1
      src/views/sysworkflow/lowcodepage/pageList.vue
  10. 8
      src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue

6
src/api/DesignForm/tableButton.ts

@ -382,6 +382,12 @@ export interface viewPageType {
}
}
,
group: {
status: boolean,
isClick: boolean,
form: {
},
},
time:{
status:boolean,
isClick:boolean,

236
src/components/DesignForm/app/groupPage.vue

@ -0,0 +1,236 @@
<!--
@ 作者: 秦东
@ 时间: 2024-07-08 10:43:52
@ 备注: 自定义应用时间轴视图
-->
<script lang='ts' setup>
import { gainFormPageListCont } from '@/api/DesignForm/requestapi'
const props = defineProps({
searchSend:{
type:Object,
default(){
return {}
}
},
viewSetup:{
type:Object,
default(){
return {}
}
},
columnsFilter:{
type:Object,
default(){
return {}
}
},
drawerWith:{
type:Number,
default:0
}
});
//---------pagination configs------
const totalNum = ref(0)
const pageSize = ref(props.searchSend.pagesize)
//------------------ by han2015: ----------------------
const columnSortData = new Map();
const setHeaderClass=(params:any)=>{
if(columnSortData.has(params.column.property)){
if(columnSortData.get(params.column.property)=="DESC"){
params.column.order="descending"
return "sorted-desc"
}else{
params.column.order="ascending"
return "sorted-asc"
}
}
return ""
}
// by han2015:
const onUpdateSort = (data: { prop: string; order: "ascending" | "descending" | null }) => {
if (data.order === "descending") {
columnSortData.set(data.prop, "DESC");
} else if (data.order === "ascending") {
columnSortData.set(data.prop, "ASC");
} else {
columnSortData.delete(data.prop);
}
getPageData()
}
const tableDataList = ref([]) //
const groupColumnSearch = (val:any,clas?:number) =>{
getPageData()
}
const handleSizeChange = (page: number) => {
// console.log("",page)
pageSize.value = page;
getPageData();
};
const handleCurrentChange = (page: number) => {
props.searchSend.page = page
getPageData();
};
const getPageData=()=>{
// by han2015:
let arr:string[]=[];
columnSortData.forEach((value, key) => {
arr.push(`${key} ${value}`)
});
let sendData = props.searchSend
sendData.sortData= arr.join(", ")
sendData.pagesize = 50
gainFormPageListCont(sendData)
.then(({data})=>{
totalNum.value = data.total
tableDataList.value = data.list
})
}
const spanMethod = (data: { row: any; rowIndex: number; column: TableColumnCtx<any>; columnIndex: number; }) => {
if(data.rowIndex==1){
console.log(data.column)
}
}
onMounted(()=>{
nextTick(()=>{
getPageData()
})
})
defineExpose({
groupColumnSearch
})
</script>
<template>
<div>
<el-row :gutter="20">
<el-table
:data="tableDataList"
:span-method="spanMethod"
@sort-change="onUpdateSort"
:header-cell-class-name="setHeaderClass"
border
>
<template v-for="item in columnsFilter" :key="item.id || item.label">
<el-table-column
v-if="['-'].includes(item.fieldClass)"
:type="item.type"
:prop="item.field"
:label="item.label"
config=""
width="60"
fixed
header-align="center"
align="center"
>
<template v-if="item.help" #header="scope">
{{ scope.column.label }}
<tooltip :content="item.help" />
</template>
</el-table-column>
<el-table-column
v-else-if="item.fieldClass == '_lableTitle'"
label="标题"
config=""
min-width="90"
header-align="center"
align="center"
>
<template #default="scope">
{{ scope.row[scope.column.property] }}
</template>
</el-table-column>
<el-table-column
v-else-if="item.fieldClass == ''"
:prop="item.field"
:label="item.label"
header-align="center"
sortable="custom"
align="center"
>
<template #default="scope">
<template v-for="sunItem in item.children" v-if="item.pattern == 'table'">
<el-table-column v-if="sunItem.fieldClass == ''" :prop="sunItem.field" :label="sunItem.label" header-align="center" align="center" :min-width="readerColumnSun(sunItem)">
<template #default="scopeChilder">
{{scopeChilder.row[item.field]}}
</template>
</el-table-column>
</template>
</template>
</el-table-column>
<el-table-column
v-else-if="item.fieldClass == '__control'"
:prop="item.field"
:label="item.label"
config=""
min-width="1"
header-align="center"
align="center"
fixed="right"
>
</el-table-column>
<el-table-column
v-else
:prop="item.field"
:label="item.label"
config=""
min-width="90"
header-align="center"
sortable="custom"
align="center"
>
<template v-if="item.fieldClass == 'associatedForms'" #default="scope">
<el-link
key="primary"
type="primary"
>
{{ scope.row[scope.column.property] }}
</el-link>
</template>
<template v-else #default="scope">
{{ scope.row[scope.column.property] }}
</template>
</el-table-column>
</template>
</el-table>
</el-row>
<div class="pageBox">
<el-pagination
v-model:current-page="props.searchSend.page"
v-model:page-size="pageSize"
:page-sizes="[3, 9, 12, 30, 50, 100]"
:background="true"
layout="total, sizes, prev, pager, next, jumper"
:total="totalNum"
class="page"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<style lang='scss' scoped>
</style>

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

@ -58,6 +58,7 @@ import NewTableFlow from "@/views/sysworkflow/lowcodepage/pageFlow/newTableFlow.
import TimeAxisPage from "@/components/DesignForm/app/timeAxis.vue";
import CardPage from "@/components/DesignForm/app/cardPage.vue";
import GanttPageIng from "@/components/DesignForm/app/gannttPage.vue";
import GroupPage from "@/components/DesignForm/app/groupPage.vue";
import MapPage from "@/components/DesignForm/app/mapPage.vue";
import CalendarPage from "@/components/DesignForm/app/calendar/calendar1/calendarPage.vue";
import SearchSelect from "@/components/DesignForm/app/calendar/selectSearch.vue";
@ -973,6 +974,7 @@ watch(
);
const timeAxisRef = ref(null);
const groupPageRef = ref(null);
const calendarPageRef = ref(null);
const cardPageRef = ref(null);
const searchSend = reactive({
@ -1005,7 +1007,7 @@ const getPageData = () => {
searchData: json2string(props.searchData),
sortData: arr.join(", "),
};
// console.log("",sendData)
console.log("获取列表详细信息??????",sendData)
switch (viewType.value) {
case 2:
@ -1026,6 +1028,12 @@ const getPageData = () => {
break;
case 5:
break;
case 8: //group
nextTick(() => {
console.log("获取列表详细信息-------222---------->??????",);
groupPageRef.value.groupColumnSearch(sendData, 1);
});
break;
case 6:
nextTick(() => {
cardPageRef.value.getCardList(sendData);
@ -1766,6 +1774,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.map.isClick = false;
props.viewPage.card.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
break;
case 3:
props.viewPage.list.isClick = false;
@ -1774,6 +1783,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.map.isClick = false;
props.viewPage.card.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
getPageData();
break;
case 4:
@ -1783,6 +1793,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.map.isClick = false;
props.viewPage.card.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
break;
case 5:
props.viewPage.list.isClick = false;
@ -1791,6 +1802,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.gantt.isClick = false;
props.viewPage.card.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
break;
case 6:
props.viewPage.list.isClick = false;
@ -1799,6 +1811,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.gantt.isClick = false;
props.viewPage.map.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
break;
case 7:
props.viewPage.card.isClick = false;
@ -1807,6 +1820,16 @@ const tabsView = (val: any, types: number) => {
props.viewPage.time.isClick = false;
props.viewPage.gantt.isClick = false;
props.viewPage.map.isClick = false;
props.viewPage.group.isClick = false;
break;
case 8:
props.viewPage.card.isClick = false;
props.viewPage.list.isClick = false;
props.viewPage.date.isClick = false;
props.viewPage.time.isClick = false;
props.viewPage.gantt.isClick = false;
props.viewPage.map.isClick = false;
props.viewPage.chart.isClick = false;
break;
default:
props.viewPage.date.isClick = false;
@ -1815,6 +1838,7 @@ const tabsView = (val: any, types: number) => {
props.viewPage.gantt.isClick = false;
props.viewPage.map.isClick = false;
props.viewPage.chart.isClick = false;
props.viewPage.group.isClick = false;
break;
}
};
@ -2113,6 +2137,23 @@ const isObject = (obj: any) => {
@click="tabsView(props.viewPage.card, 6)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.group && props.viewPage.group.status"
class="box-item"
effect="dark"
content="分组"
placement="top"
>
<el-button
size="small"
class="fa fa-list"
:color="
props.viewPage.group && props.viewPage.group.isClick ? '#a0cfff' : ''
"
@click="tabsView(props.viewPage.group, 8)"
/>
</el-tooltip>
<el-tooltip
v-if="viewPage.date.status"
class="box-item"
@ -2189,7 +2230,6 @@ const isObject = (obj: any) => {
</el-col>
<el-col v-if="viewType == 1" :span="24" class="tableTdClass">
+++++++++++++++++++++
<el-table
v-bind="data.tableProps"
ref="table"
@ -2484,6 +2524,16 @@ const isObject = (obj: any) => {
/>
</div>
</el-col>
<el-col v-if="viewType == 8" :span="24">
<GroupPage
ref="groupPageRef"
:search-send="searchSend"
:columns-filter="columnsFilter"
:body-hight="265"
:drawer-with="drawerWith"
:view-setup="viewPage.date"
/>
</el-col>
<el-col v-if="viewType == 2" :span="24">
<CalendarPage
ref="calendarPageRef"

18
src/components/DesignForm/tableListPage/index.vue

@ -1868,6 +1868,24 @@ const isObject = (obj: any) => {
@click="tabsView(props.viewPage.card, 6)"
/>
</el-tooltip>
<el-tooltip
v-if="props.viewPage.group && props.viewPage.group.status"
class="box-item"
effect="dark"
content="分组"
placement="top"
>
<el-button
size="small"
class="fa fa-table"
:color="
props.viewPage.group && props.viewPage.group.isClick ? '#a0cfff' : ''
"
@click="tabsView(props.viewPage.group, 8)"
/>
</el-tooltip>
<el-tooltip
v-if="viewPage.date.status"
class="box-item"

18
src/directive/permission/button.ts

@ -79,13 +79,13 @@ export const hasAppGroup: Directive = {
*/
export const appHasPower = (signCode:string,buttonKey:string) => {
const userStore = useUserStore();
console.log("判断应用级权限--appSystemPower->",userStore.myPower.appSystemPower)
//console.log("判断应用级权限--appSystemPower->",userStore.myPower.appSystemPower)
return userStore.myPower.appSystemPower.some((perm: any) => {
console.log(signCode,"判断应用级权限--->",buttonKey)
//console.log(signCode,"判断应用级权限--->",buttonKey)
if(perm.AppId == signCode){
console.log("判断应用级权限-1111-->",perm.AppId,buttonKey)
console.log("判断应用级权限-222-->",perm.butPower && Array.isArray(perm.butPower))
// console.log("判断应用级权限-1111-->",perm.AppId,buttonKey)
// console.log("判断应用级权限-222-->",perm.butPower && Array.isArray(perm.butPower))
if(perm.butPower && Array.isArray(perm.butPower)){
// console.log("判断应用级权限--->",perm.AppId,buttonKey)
return perm.butPower.includes(buttonKey)
@ -101,15 +101,15 @@ export const appHasPower = (signCode:string,buttonKey:string) => {
*/
export const formHasPower = (signCode:string,tormCode:string,buttonKey:string,classType:number) => {
const userStore = useUserStore();
console.log("判断表单级权限-1111-->",signCode,userStore.myPower.appSystemPower)
//console.log("判断表单级权限-1111-->",signCode,userStore.myPower.appSystemPower)
if(userStore.myPower.appSystemPower && Array.isArray(userStore.myPower.appSystemPower)){
return userStore.myPower.appSystemPower.some((perm: any) => {
if(perm.AppId == signCode){
console.log("判断表单级权限-1112-->",signCode)
console.log("判断表单级权限-1113-->",tormCode)
console.log("判断表单级权限-1114-->",perm.formPower)
console.log("判断表单级权限-1115-->",buttonKey)
// console.log("判断表单级权限-1112-->",signCode)
// console.log("判断表单级权限-1113-->",tormCode)
// console.log("判断表单级权限-1114-->",perm.formPower)
// console.log("判断表单级权限-1115-->",buttonKey)
if(perm.formPower && Array.isArray(perm.formPower)){
return perm.formPower.some((formPerm: any) => {
switch(classType){

7
src/views/sysworkflow/lowCodeTasks/index.vue

@ -102,6 +102,13 @@ const stateList = reactive({
title: [],
},
},
group: {
status: false,
isClick: false,
form: {
title: [],
},
},
time: {
status: false,
isClick: false,

9
src/views/sysworkflow/lowcodepage/appPage/appPageForm/openAppFormPage.vue

@ -116,6 +116,13 @@ const stateList = reactive({
dayType: 1,
},
},
group: {
status: false,
isClick: false,
form: {
title: [],
},
},
time: {
status: false,
isClick: false,
@ -381,6 +388,7 @@ const gainAppFormPageInit = () => {
stateList.view.time = stateData.view.time;
stateList.view.gantt = stateData.view.gantt;
stateList.view.map = stateData.view.map;
stateList.view.group = stateData.view.group;
}
stateList.view.chart.status = data.data.chart;
// console.log("---->", stateList.view);
@ -537,7 +545,6 @@ defineExpose({
<!-- {{ props.formKey }}
{{ stateForm }} -->
<ak-page-list
v-if="activePage == 1"
v-model:look-page-is-show="lookPageIsShow"

73
src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageList.vue

@ -167,6 +167,13 @@ const state = reactive({
title: [],
},
},
group: {
status: false,
isClick: false,
form: {
title: [],
},
},
date: {
status: false,
isClick: false,
@ -443,6 +450,16 @@ const getListInfo = () => {
},
};
}
if(!state.view.group){
state.view.group={
status: false,
isClick: false,
form: {
title: [],
},
}
}
}
}
@ -852,6 +869,8 @@ const saveFormListData = () => {
data: json2string(state),
id: props.appPageKey.toString(),
};
console.log(params,"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
// console.log("",params)
editCustomerFormList(params).then((data) => {
// console.log("",data)
@ -1656,6 +1675,16 @@ const delAllPick = () => {
<el-button size="small" class="fa fa-id-card-o" />
</el-tooltip>
<el-tooltip
v-if="state.view.group.status"
class="box-item"
effect="dark"
content="分组视图"
placement="top"
>
<el-button size="small" class="fa fa-table" />
</el-tooltip>
<el-tooltip
v-if="state.view.date.status"
class="box-item"
@ -2298,6 +2327,50 @@ const delAllPick = () => {
</el-form>
</div>
</el-collapse-item>
<el-collapse-item
title="Consistency"
name="group"
>
<template #title>
<div class="collapse-title">
<div>
<i class="fa fa-table"></i>
<el-text>分组视图</el-text>
</div>
<el-switch
v-model="state.view.group.status"
class="openOfClose"
@click.stop="showCollapse"
/>
</div>
</template>
<div>
<el-form
label-position="top"
label-width="auto"
:model="state.view.group.form"
style="max-width: 600px"
>
<el-form-item label="标题字段">
<el-select
v-model="state.view.group.form.title"
multiple
placeholder="请选择标题字段"
>
<el-option
v-for="item in allKeyWords"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
</div>
</el-collapse-item>
<el-collapse-item
title="Consistency"
name="date"

1
src/views/sysworkflow/lowcodepage/pageList.vue

@ -755,6 +755,7 @@ const saveFormListData = () => {
data: json2string(state),
id: props.formKey.toString(),
};
console.log(params,"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
// console.log("",params)
editCustomerFormList(params).then((data) => {
// console.log("",data)

8
src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue

@ -108,6 +108,13 @@ const stateList = reactive({
title: [],
},
},
group: {
status: false,
isClick: false,
form: {
title: [],
},
},
time: {
status: false,
isClick: false,
@ -300,6 +307,7 @@ const initLoadData = () => {
stateList.view.time = stateData.view.time;
stateList.view.gantt = stateData.view.gantt;
stateList.view.map = stateData.view.map;
stateList.view.group = stateData.view.group;
}
stateList.view.chart.status = data.data.chart;
}

Loading…
Cancel
Save