埃驰前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

301 lines
11 KiB

import {
getPageList,
postExport,
}
from "@/api/wms-api"
export const TableHeaderMixins = {
data() {
return {
//筛选(旧版,使用conditionFilters组件)
screenData: {
filters: [{
logic: "",
column: "",
action: "",
value: ""
}]
},
// 是否添加到body中,(旧版,使用conditionFilters组件)
modalAppendToBody: false,
//新增/编辑预览数据
previewFormData: {},
// 全面搜索:当前列表数据请求接口的筛选条件
httpOverallSearchData:null,
filterForDetailShow:false,//明细筛选弹窗页面显隐控制
}
},
methods: {
// 关闭导出弹窗
closeExportDrop(){
this.displayDialog.exportDialog = false
},
// 关闭主表新增编辑api
closeAddEditApiPop(){
this.addEditApiType = null
this.editFromApiRowData = null
this.displayDialog.addEditApiDialog = false
},
// 导出功能
exportDropSubmit(type,form){
const name = this.$route.meta.title
let _userId = this.$store.getters.currentUserInfo && this.$store.getters.currentUserInfo.id ? this.$store.getters.currentUserInfo.id : '00000000-0000-0000-0000-000000000000'
let _params = {
isRedundance:Boolean(form.isRedundance),
isDetailExport:Boolean(form.isDetail),
userId:_userId
}
let _exportUrl = this.URLOption_export ? this.URLOption_export : this.URLOption_base;
let _special = this.URLOption_export ? true : false
let _data = JSON.parse(JSON.stringify(this.PageListParams))
// 全部导出处理
if(type && type == 'all'){ _data.MaxResultCount = this.totalCount}
this.closeExportDrop()
this.Loading.tableLoading = true
postExport(_params,_data, _exportUrl, _special).then(res => {
this.blob(res, name)//使用前端导出名称
this.Loading.tableLoading = false
}).catch(err => {
this.Loading.tableLoading = false
})
},
// 点击常用按钮
topbutton(val,item) {
// 更新
if (val == 'refresh') {
this.oldSkipCount = 1
this.paging()
// this.$store.dispatch("app/appMainLoading", true)
}
// 新增(原始前端写死配置方式)
else if (val == 'newly') {
this.formTitle = "新增" + this.$route.meta.title;
this.formReveal = true
this.theEvent = "newly"
this.displayDialog.newDialog = true;
}
// Api新增(参数配置从api获取)
else if (val == 'addFromApi') {
this.addEditApiType = 'add'
this.displayDialog.addEditApiDialog = true;
}
// 筛选(旧版,使用conditionFilters组件)
// else if (val == 'filter') {
// this.displayDialog.screenDialog = true
// if (this.PageListParams.condition.filters.length != 0) {
// this.screenData.filters = []
// this.screenData.filters.push(...this.PageListParams.condition.filters)
// } else {
// let data = [{
// logic: "And",
// column: "",
// action: "==",
// value: ""
// }]
// this.screenData.filters = data
// }
// }
// 导出
else if (val == 'export') {
this.displayDialog.exportDialog = true
}
// 导入
else if (val == 'import') {
this.displayDialog.importDialog = true
}
// 明细筛选按钮
else if (val == 'filterForDetail'){
this.changeFilterForDetailShow(true)
}
// 自定义按钮 // 批量打印 ; 不合格转合格
else if(val == 'custom'){
item.customHandle()
}
},
// 明细筛选弹窗页面显隐控制
changeFilterForDetailShow(data){
this.filterForDetailShow = data
},
// 快速搜索按钮
quicklySearchClick(val,option,searchOverallRef){
this.oldSkipCount = 1
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount;
this.PageListParams.condition = {filters: []}
if(option && val && val.length > 0){
this.PageListParams.condition.filters.push({
action:option.action || '==',
column: option.prop,
logic: "And",
value: val,
})
}
// todo:使用paging(callback)如204行
getPageList(this.PageListParams, this.URLOption_base).then(res => {
this.tableData = res.items
this.totalCount = res.totalCount
this.httpOverallSearchData = null //清空全面筛选的回显数据
if(searchOverallRef)searchOverallRef.changeMoreListShow(false)//关闭高级筛选
this.pagingCallback()
}).catch(err => {
this.Loading.tableLoading = false
})
},
// 快速搜索按钮清除搜索
quicklySearchClear(val,option,searchOverallRef,hasSearch){
// 如果没有全面筛选,点击快速清除时候 直接调用接口
// if(!hasSearch)this.quicklySearchClick(val,option,searchOverallRef)
// 不管有没有全面筛选都直接调用接口
this.quicklySearchClick(val,option,searchOverallRef)
},
// 全面筛选组件重新获取页面数据操作 20230215
overallSearchGetPageHandle(options){
let _data_primary = options.data_primary,
_data_moreList = options.data_moreList,
_option_primary = options.option_primary,
_vm_quickly = options.vm_quickly,
_vm_moreList = options.vm_moreList
//普通筛选数据集合
let _primary_filters = []
_option_primary.forEach(item=>{
if(_data_primary[item.prop] && String(_data_primary[item.prop]).length > 0){
let _item = {
action:item.action || '==',
column:item.prop,
logic:'And',
value:String(_data_primary[item.prop])
}
_primary_filters.push(_item)
}
})
//高级筛选数据集合
let _moreList_filters = []
_data_moreList.filters.forEach(item=>{
if(String(item.column).length > 0 && String(item.value).length > 0){
_moreList_filters.push(item)
}
})
// 全部筛选数据集合
let _all_filters = []
_all_filters = _primary_filters.concat(_moreList_filters)
// 调用接口数据配置
this.oldSkipCount = 1
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount;
this.PageListParams.condition = {filters:_all_filters}
this.paging(()=>{
//快速搜索清空
if(_vm_quickly){_vm_quickly.searchNormalClear(true)}
//关闭高级筛选
if(_vm_moreList){_vm_moreList.changeMoreListShow(false)}
// 同步当前列表数据请求接口的筛选条件
this.httpOverallSearchData = {}
this.httpOverallSearchData.params = JSON.parse(JSON.stringify(_data_primary))
this.httpOverallSearchData.moreList = JSON.parse(JSON.stringify(_data_moreList))
})
// getPageList(this.PageListParams, this.URLOption_base).then(res => {
// this.tableData = res.items
// this.totalCount = res.totalCount
// //快速搜索清空
// if(_vm_quickly){_vm_quickly.searchNormalClear(true)}
// //关闭高级筛选
// if(_vm_moreList){_vm_moreList.changeMoreListShow(false)}
// // 同步当前列表数据请求接口的筛选条件
// this.httpOverallSearchData = {}
// this.httpOverallSearchData.params = JSON.parse(JSON.stringify(_data_primary))
// this.httpOverallSearchData.moreList = JSON.parse(JSON.stringify(_data_moreList))
// this.pagingCallback()
// }).catch(err => {
// this.Loading.tableLoading = false
// })
},
// 全面筛选所有按钮操作集 20230215
overallSearchFormClick(options){
let _item = options.item;
// 普通搜索 + 高级搜索 + 普通重置 + 高级重置
if(
_item.name == 'search' || _item.name == 'moreList-search' ||
_item.name == 'reset' || _item.name == 'moreList-reset'
){
this.overallSearchGetPageHandle(options)
}
},
// 以下为旧版,暂时保留(使用conditionFilters组件)
//筛选(旧版,使用conditionFilters组件)
screenFormClick(val) {
if (val[0] == 0) {
this.PageListParams.condition.filters = []
this.oldSkipCount = 1
this.paging()
this.displayDialog.screenDialog = false;
} else if (val[0] == 1) {
val[1].clearValidate()
this.displayDialog.screenDialog = false;
} else {
val[1].validate((valid) => {
if (valid) {
this.PageListParams.condition.filters = []
// for (let item in this.screenData.filters) {
this.PageListParams.condition.filters.push(...this.screenData.filters)
// }
this.oldSkipCount = 1
this.paging()
this.displayDialog.screenDialog = false;
} else {
this.$errorMsg('请按照提示继续操作')
return false;
}
});
}
},
//添加筛选条件(旧版,使用conditionFilters组件)
screenPush() {
let data = {
logic: "And",
column: "",
action: "==",
value: ""
}
// if (this.screenData.filters.length <= this.tableColumns.length) {
this.screenData.filters.push(data)
// } else {
// this.$errorMsg('筛选条件数不足!')
// }
},
//删除筛选条件(旧版,使用conditionFilters组件)
screenDelete(val) {
if (this.screenData.filters.length == 1) {
this.$warningMsg('必须保留一条筛选条件!')
} else {
this.modalAppendToBody = true
this.$confirm('您确定删除吗, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.screenData.filters.splice(val, 1)
// this.modalAppendToBody = false
}).catch(() => {
// this.modalAppendToBody = false
});
}
},
/**
* 表头字段设置
* @param {*} data 数据
* @param {*} type 设置来源
* list_api: 表头来自api的列表 detail_api: 表头来自api列表的明细 detailPage_api表头来自api的明细页面列表
* list: 表头固定的列表 detail: 表头固定列表的明细
*/
rowDrop(data,type) {
if(!type || type == 'list_api'){ this.apiColumns_Table = data }
if(type && type == 'detail_api'){ this.apiColumns_DetailsTable = data }
// if(type && type == 'detailPage_api'){ this.apiColumns_DetailsPage = data }
if(type && type == 'list'){ this.tableColumns = data }
if(type && type == 'detail'){ this.detailsTableColumns = data }
}
}
}