Browse Source

设置自定义列表按钮功能

lwx_v7
超级管理员 2 years ago
parent
commit
59d505715f
  1. 8
      src/api/DesignForm/requestapi.ts
  2. 8
      src/components/DesignForm/public/form/form.vue
  3. 216
      src/components/DesignForm/tableListPage/index.vue
  4. 10
      src/types/components.d.ts
  5. 6
      src/views/sysworkflow/lowcodepage/appFormList.vue
  6. 19
      src/views/sysworkflow/lowcodepage/pageList.vue

8
src/api/DesignForm/requestapi.ts

@ -333,3 +333,11 @@ export function gainFormListCont(data: getContForId) {
data: data data: data
}); });
} }
//获取表单列表数据
export function gainFormPageListCont(data: any) {
return request({
url: '/systemapi/customer_form/gainFormPageListCont',
method: 'post',
data: data
});
}

8
src/components/DesignForm/public/form/form.vue

@ -588,7 +588,8 @@ const submit = (params = {}) => {
case "saveFormContent": case "saveFormContent":
// apiUrl ="/systemapi/task_management/customer_form_adddata" // apiUrl ="/systemapi/task_management/customer_form_adddata"
// apiUrl ="/systemapi/task_management/add_form_data" // apiUrl ="/systemapi/task_management/add_form_data"
apiUrl ="/systemapi/task_management/add_form_newdata" // apiUrl ="/systemapi/task_management/add_form_newdata"
apiUrl ="/systemapi/task_management/add_customer_form"
break; break;
case "editFormContent": case "editFormContent":
apiUrl ="/systemapi/task_management/newcust_form_editdata" apiUrl ="/systemapi/task_management/newcust_form_editdata"
@ -631,7 +632,7 @@ const submit = (params = {}) => {
console.log("submitParams--->",submitParams) console.log("submitParams--->",submitParams)
console.log("formatParams--->",formatParams) console.log("formatParams--->",formatParams)
debugger // debugger
// //
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => { .then((res: any) => {
@ -793,7 +794,8 @@ const anewSubmit = (type: string, res: any) => {
//稿 //稿
const saveDraft = (params = {}) => { const saveDraft = (params = {}) => {
let apiUrl ="/systemapi/task_management/add_form_newdata" // let apiUrl ="/systemapi/task_management/add_form_newdata"
let apiUrl ="/systemapi/task_management/add_customer_form"
if (props.isSearch || !apiUrl || loading.value) { if (props.isSearch || !apiUrl || loading.value) {
if (!props.isSearch && !apiUrl) { if (!props.isSearch && !apiUrl) {
console.error( console.error(

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

@ -10,8 +10,8 @@ import { useDesignFormStore } from '@/store/DesignForm/designForm'
import { attrButton,FormPageList,FormPageConfig } from '@/api/DesignForm/tableButton' import { attrButton,FormPageList,FormPageConfig } from '@/api/DesignForm/tableButton'
import { inputUnit,timeUnit,choiceUnit,switchUnit,orgUnit,checkboxUnit } from '@/api/DesignForm/fieldUnit' import { inputUnit,timeUnit,choiceUnit,switchUnit,orgUnit,checkboxUnit } from '@/api/DesignForm/fieldUnit'
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
import { gainFormPageListCont } from '@/api/DesignForm/requestapi'
import { Picture,InfoFilled,QuestionFilled } from '@element-plus/icons-vue'
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
@ -73,7 +73,7 @@ const tableDataList = ref([]) // 表格行数据
const state = reactive({ const state = reactive({
loading: false, loading: false,
currentPage: 1, currentPage: 1,
pageSize: props.config?.pageSize || 20, pageSize: props.config?.pageSize || 2,
total: 0, total: 0,
selectionChecked: [], selectionChecked: [],
dict: {}, // dict: {}, //
@ -224,6 +224,7 @@ watch(()=>props.lookPageIsShow,(val:boolean)=>{
@ 功能: 获取数据 @ 功能: 获取数据
*/ */
const getPageData = () => { const getPageData = () => {
state.loading = true;
let sendData = { let sendData = {
formId:props.formId, formId:props.formId,
page:state.currentPage, page:state.currentPage,
@ -231,7 +232,63 @@ const getPageData = () => {
searchData:json2string(props.searchData) searchData:json2string(props.searchData)
} }
console.log("获取列表详细信息",sendData) console.log("获取列表详细信息",sendData)
gainFormPageListCont(sendData)
.then((data)=>{
console.log("获取列表详细信息----------------->",data)
tableDataList.value = data.data.list
state.total = data.data.total
state.loading = false;
})
}
onMounted(()=>{
getPageData()
})
/**
@ 作者: 秦东
@ 时间: 2024-04-02 13:59:21
@ 功能: 判断单选值
*/
const judjeRadio = (val: any, options: any[]) => {
// console.log("",val, options)
if(options.length > 0){
options.forEach((item)=>{
if(item.value == val){
console.log("判断单选值",val, item.value,item.label)
val = item.label
}
})
}
if(val == 0 || val == "0"){
val = ""
}
return val
} }
/**
@ 作者: 秦东
@ 时间: 2024-04-02 14:49:40
@ 功能: 判断开关类型
*/
const judjeSwitch = (val:any,yesVal:any) => {
if(val == yesVal) return true;
return false;
}
/**
@ 作者: 秦东
@ 时间: 2024-04-03 13:13:56
@ 功能: 列表信息删除安妮
*/
const confirmEvent = (val:any) => {
console.log('confirm!',val)
}
const cancelEvent = (val:any) => {
console.log('cancel!',val)
}
/**
@ 作者: 秦东
@ 时间: 2024-04-03 13:24:06
@ 功能: 查看详细内容
*/
const lookPageInfo = (val:any) => {}
</script> </script>
<template> <template>
<div ref="container" v-loading="state.loading" class="table-list-comm"> <div ref="container" v-loading="state.loading" class="table-list-comm">
@ -347,26 +404,127 @@ const getPageData = () => {
ref="table" ref="table"
:data="tableDataList" :data="tableDataList"
@selection-change="selectionChange" @selection-change="selectionChange"
table-layout="fixed"
> >
<template <template
v-for="item in columnsFilter" v-for="item in columnsFilter"
:key="item.prop || item.label" :key="item.id || item.label"
> >
<el-table-column v-if="['-'].includes(item.fieldClass)" v-bind="item" config="" width="60">
<el-table-column v-if="['-'].includes(item.fieldClass)" :type="item.type" :prop="item.field" :label="item.label" config="" width="60">
<template v-if="item.help" #header="scope"> <template v-if="item.help" #header="scope">
{{ scope.column.label }} {{ scope.column.label }}
<tooltip :content="item.help" /> <tooltip :content="item.help" />
</template> </template>
<template v-else-if="item.fieldClass === '__control'" #default="scope"> </el-table-column>
<el-table-column v-else-if="item.fieldClass=='__control'" :prop="item.field" :label="item.label" config="">
<template #default="scope">
<el-button-group>
<el-tooltip
v-if="scope.row.flowIsOpen==1"
class="box-item"
effect="dark"
content="提交审批"
placement="top-end"
>
<el-button type="success" size="small" class="fa fa-send-o" />
</el-tooltip>
<el-tooltip
v-if="scope.row.flowIsOpen==1"
class="box-item"
effect="dark"
content="重新申请"
placement="top-end"
>
<el-button type="warning" size="small" class="fa fa-retweet" />
</el-tooltip>
<el-tooltip
class="box-item"
effect="dark"
content="查看详情"
placement="top-end"
>
<el-button @click="lookPageInfo(scope.row)" type="primary" size="small" class="fa fa-eye" />
</el-tooltip>
<el-tooltip
v-if="scope.row.flowIsOpen==1"
class="box-item"
effect="dark"
content="撤回"
placement="top-end"
>
<el-button size="small" class="fa fa-reply-all" />
</el-tooltip>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
:icon="QuestionFilled"
icon-color="#F56C6C"
title="您确定要删除此条记录?一经删除!数据将不可恢复!"
@confirm="confirmEvent(scope.row)"
@cancel="cancelEvent(scope.row)"
>
<template #reference>
<el-button type="danger" size="small" class="fa fa-trash-o" />
</template>
</el-popconfirm>
<el-tooltip
v-if="scope.row.flowIsOpen==1"
class="box-item"
effect="dark"
content="申请修改"
placement="top-end"
>
<el-button type="info" size="small" class="fa fa-edit" />
</el-tooltip>
</el-button-group>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-else v-bind="item" config=""> <el-table-column v-else :prop="item.field" :label="item.label" config="">
<template v-if="item.help" #header="scope"> <template v-if="item.help" #header="scope">
{{ scope.column.label }} {{ scope.column.label }}
<tooltip :content="item.help" /> <tooltip :content="item.help" />
</template> </template>
<template v-else-if="item.fieldClass === '__control'" #default="scope"> <template v-if="item.fieldClass=='radio'" #default="scope">
<!-- {{scope.row[scope.column.property]}}{{item}} -->
{{ judjeRadio(scope.row[scope.column.property],item.options) }}
</template>
<template v-if="item.fieldClass=='upload'" #default="scope" >
<div class="demo-image__error">
<el-image
style="width: 50px; height: 50px"
:src="scope.row[scope.column.property]"
>
<template #error>
<div class="image-slot">
<el-icon><Picture /></el-icon>
</div>
</template>
</el-image>
</div>
</template>
<template v-if="item.fieldClass=='switch'" #default="scope">
<el-tag
v-if="judjeSwitch(scope.row[scope.column.property],item.activeValue)"
type="success"
effect="light"
>
启用
</el-tag>
<el-tag
v-else
type="danger"
effect="light"
>
禁用
</el-tag>
</template>
<template v-if="item.fieldClass=='baidumap'" #default="scope">
{{scope.row[scope.column.property]}}
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
@ -385,9 +543,9 @@ const getPageData = () => {
/> />
</div> </div>
</el-col> </el-col>
<el-col :span="24" > <el-col :span="24" style="display:none">
{{formId}}
{{ data.operateBtn}} {{ searchData}}
</el-col> </el-col>
<el-col :span="24" style="display:none"> <el-col :span="24" style="display:none">
<el-button-group> <el-button-group>
@ -487,4 +645,40 @@ const getPageData = () => {
width: auto; width: auto;
margin-right: 10px; margin-right: 10px;
} }
.demo-image__error .block {
padding: 0px 0;
text-align: center;
border-right: solid 1px var(--el-border-color);
display: inline-block;
width: 100%;
box-sizing: border-box;
vertical-align: top;
}
.demo-image__error .demonstration {
display: block;
color: var(--el-text-color-secondary);
font-size: 14px;
margin-bottom: 20px;
}
.demo-image__error .el-image {
padding: 0 5px;
max-width: 300px;
max-height: 200px;
width: 100%;
height: 200px;
}
.demo-image__error .image-slot {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background: var(--el-fill-color-light);
color: var(--el-text-color-secondary);
font-size: 30px;
}
.demo-image__error .image-slot .el-icon {
font-size: 30px;
}
</style> </style>

10
src/types/components.d.ts

@ -22,6 +22,7 @@ declare module '@vue/runtime-core' {
DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default'] DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default']
DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default'] DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix'] ElAffix: typeof import('element-plus/es')['ElAffix']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
@ -30,12 +31,14 @@ declare module '@vue/runtime-core' {
ElCard: typeof import('element-plus/es')['ElCard'] ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel'] ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse'] ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
@ -52,10 +55,12 @@ declare module '@vue/runtime-core' {
ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput'] ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
@ -103,6 +108,11 @@ declare module '@vue/runtime-core' {
IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default'] IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpClose: typeof import('~icons/ep/close')['default'] IEpClose: typeof import('~icons/ep/close')['default']
IEpDelete: typeof import('~icons/ep/delete')['default']
IEpEdit: typeof import('~icons/ep/edit')['default']
IEpMessageBox: typeof import('~icons/ep/message-box')['default']
IEpOperation: typeof import('~icons/ep/operation')['default']
IEpPlus: typeof import('~icons/ep/plus')['default']
IEpRefresh: typeof import('~icons/ep/refresh')['default'] IEpRefresh: typeof import('~icons/ep/refresh')['default']
IEpSearch: typeof import('~icons/ep/search')['default'] IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default'] IEpSetting: typeof import('~icons/ep/setting')['default']

6
src/views/sysworkflow/lowcodepage/appFormList.vue

@ -207,17 +207,17 @@ const state = reactive({
:src="squareUrl" :src="squareUrl"
title="示例图片" title="示例图片"
class="picture" class="picture"
@click.top="startUsing(item.id,item.name)" @click.top="startUsing(item.versionId,item.name)"
/> />
<img <img
v-else v-else
:src="item.icon" :src="item.icon"
title="示例图片" title="示例图片"
class="picture" class="picture"
@click.top="startUsing(item.id,item.name)" @click.top="startUsing(item.versionId,item.name)"
/> />
<div class="cardhead"> <div class="cardhead">
<el-text class="w-150px mb-2" truncated :title="item.name" @click.top="startUsing(item.id,item.name)">{{item.name}}</el-text> <el-text class="w-150px mb-2" truncated :title="item.name" @click.top="startUsing(item.versionId,item.name)">{{item.name}}</el-text>
</div> </div>
<el-row> <el-row>
<el-col :span="8" class="but_centent"> <el-col :span="8" class="but_centent">

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

@ -86,7 +86,7 @@ const state = reactive({
openPageMode:"drawer" openPageMode:"drawer"
}, },
tagList: {}, tagList: {},
formId: props.formKey || '', formId: props.formKey.toString() || '',
formList: [], // formList: [], //
name: '', name: '',
treeData: {}, // treeData: {}, //
@ -638,7 +638,7 @@ const saveFormListData = () => {
} }
let params: any = { let params: any = {
data: json2string(state), data: json2string(state),
id: props.formKey id: props.formKey.toString()
} }
console.log("添加自定义表单列表设定",params) console.log("添加自定义表单列表设定",params)
editCustomerFormList(params) editCustomerFormList(params)
@ -654,9 +654,10 @@ const saveFormListData = () => {
*/ */
const getListInfo = () => { const getListInfo = () => {
console.log("获取列表内容1111",props.formKey) console.log("获取列表内容1111",props.formKey)
gainFormListCont({id:props.formKey}) gainFormListCont({id:props.formKey.toString()})
.then((data)=>{ .then((data)=>{
console.log("获取列表内容",data) console.log("获取列表内容",data)
if(data.data.listjson != null && data.data.listjson != ""){
let stateData = string2json(data.data.listjson) let stateData = string2json(data.data.listjson)
console.log("获取列表内容---->",stateData) console.log("获取列表内容---->",stateData)
state.tableData = stateData.tableData state.tableData = stateData.tableData
@ -674,12 +675,14 @@ const getListInfo = () => {
state.formApi = stateData.formApi state.formApi = stateData.formApi
state.dict = stateData.dict state.dict = stateData.dict
state.refreshTable = stateData.refreshTable state.refreshTable = stateData.refreshTable
}
zhuDaunIsTrue.value = false zhuDaunIsTrue.value = false
if(state.tableData.columns.length > 0) { if(state.tableData && state.tableData.columns && state.tableData.columns.length > 0) {
if(formTableField.masterTable.length > 0){ if(formTableField.masterTable && formTableField.masterTable.length > 0){
state.tableData.columns.forEach((itemCol:any)=>{ state.tableData.columns.forEach((itemCol:any)=>{
formTableField.masterTable.forEach((item:any)=>{ formTableField.masterTable.forEach((item:any)=>{
if(itemCol.id == item.id){ if(itemCol.id == item.id){
@ -692,7 +695,7 @@ const getListInfo = () => {
} }
if(tableAttrLogButtonList.length > 0){ if(tableAttrLogButtonList && tableAttrLogButtonList.length > 0){
state.tableData.columns.forEach((itemCol:any)=>{ state.tableData.columns.forEach((itemCol:any)=>{
tableAttrLogButtonList.forEach((item:any)=>{ tableAttrLogButtonList.forEach((item:any)=>{
if(itemCol.id == item.id){ if(itemCol.id == item.id){
@ -727,7 +730,7 @@ const getListInfo = () => {
// // } // // }
} }
if(state.tableData.controlBtn.length > 0) { if(state.tableData && state.tableData.controlBtn && state.tableData.controlBtn.length > 0) {
state.tableData.controlBtn.forEach((itemCol:any)=>{ state.tableData.controlBtn.forEach((itemCol:any)=>{
tableButtonList.forEach((item:any)=>{ tableButtonList.forEach((item:any)=>{
@ -771,7 +774,7 @@ const getListInfo = () => {
<div ref="container" class="table_box main_table"> <div ref="container" class="table_box main_table">
<div class="search-box" > <div class="search-box" >
<SearchField v-if="state.searchData.length>0&&state.config.searchIsShow" v-model:searchData="state.searchData" /> <SearchField v-if="state.searchData&&state.searchData.length>0&&state.config.searchIsShow" v-model:searchData="state.searchData" />
<div v-else class="tipBox" >条件查询搜索区域</div> <div v-else class="tipBox" >条件查询搜索区域</div>
</div> </div>

Loading…
Cancel
Save