mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2025-12-08 17:12:28 +08:00
JeecgBoot低代码平台 2.4.5 版本发布,钉钉与企业微信集成版本
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="components-input-demo-presuffix">
|
||||
<a-input @click="openModal" placeholder="corn表达式" v-model="cron" @change="handleOK">
|
||||
<a-icon slot="prefix" type="schedule" title="corn控件"/>
|
||||
<a-input @click="openModal" placeholder="cron表达式" v-model="cron" @change="(e)=>handleOK(e.target.value)">
|
||||
<a-icon slot="prefix" type="schedule" title="cron控件"/>
|
||||
<a-icon v-if="cron" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
|
||||
</a-input>
|
||||
<JCronModal ref="innerVueCron" :data="cron" @ok="handleOK"></JCronModal>
|
||||
|
||||
@ -350,7 +350,7 @@
|
||||
<a-tooltip v-bind="buildTooltipProps(row, col, id)">
|
||||
<a-upload
|
||||
name="file"
|
||||
:data="{'isup':1}"
|
||||
:data="{'isup':1, ...(col.data||{})}"
|
||||
:multiple="false"
|
||||
:action="col.action"
|
||||
:headers="uploadGetHeaders(row,col)"
|
||||
@ -381,6 +381,8 @@
|
||||
:dest-fields="col.destFields"
|
||||
:code="col.popupCode"
|
||||
:groupId="caseId"
|
||||
:param="col.param"
|
||||
:sorter="col.sorter"
|
||||
@input="(value,others)=>popupCallback(value,others,id,row,col,rowIndex)"
|
||||
/>
|
||||
<span
|
||||
@ -595,6 +597,33 @@
|
||||
</template>
|
||||
<!-- select搜索 -end -->
|
||||
|
||||
<!-- select异步搜索 -begin -->
|
||||
<template v-else-if="col.type === formTypes.sel_search_async">
|
||||
<a-tooltip v-bind="buildTooltipProps(row, col, id)">
|
||||
<j-search-select-tag
|
||||
v-if="isEditRow(row, col)"
|
||||
:id="id"
|
||||
:key="i"
|
||||
:value="searchSelectAsyncValues[id]"
|
||||
:placeholder="replaceProps(col, col.placeholder)"
|
||||
:dict="col.dict"
|
||||
:async="true"
|
||||
:getPopupContainer="getParentContainer"
|
||||
v-bind="buildProps(row,col)"
|
||||
style="width: 100%;"
|
||||
@change="(v)=>handleSearchSelectAsyncChange(v,id,row,col)"
|
||||
>
|
||||
</j-search-select-tag>
|
||||
<span
|
||||
v-else
|
||||
class="j-td-span no-edit"
|
||||
:class="{disabled: buildProps(row,col).disabled}"
|
||||
@click="handleEditRow(row, col)"
|
||||
>{{ searchSelectAsyncValues[id] }}</span>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- select异步搜索 -end -->
|
||||
|
||||
<div v-else-if="col.type === formTypes.slot" :key="i">
|
||||
<a-tooltip v-bind="buildTooltipProps(row, col, id)">
|
||||
<slot
|
||||
@ -615,7 +644,7 @@
|
||||
</div>
|
||||
|
||||
<!-- else (normal) -->
|
||||
<span v-else :key="i" v-bind="buildProps(row,col)">{{ inputValues[rowIndex][col.key] }}</span>
|
||||
<span class="comp-normal" v-else :key="i" :title="inputValues[rowIndex][col.key]" v-bind="buildProps(row,col)">{{ inputValues[rowIndex][col.key] }}</span>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
@ -672,13 +701,13 @@
|
||||
import Draggable from 'vuedraggable'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { FormTypes, VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil'
|
||||
import { cloneObject, randomString, randomNumber, getEventPath } from '@/utils/util'
|
||||
import { cloneObject, getEventPath, randomNumber, randomString } from '@/utils/util'
|
||||
import JDate from '@/components/jeecg/JDate'
|
||||
import { filterDictText, initDictOptions } from '@/components/dict/JDictSelectUtil'
|
||||
import { getFileAccessHttpUrl } from '@/api/manage';
|
||||
import { getFileAccessHttpUrl } from '@/api/manage'
|
||||
import JInputPop from '@/components/jeecg/minipop/JInputPop'
|
||||
import JFilePop from '@/components/jeecg/minipop/JFilePop'
|
||||
import { getNoAuthCols } from "@/utils/authFilter"
|
||||
import { getNoAuthCols } from '@/utils/authFilter'
|
||||
|
||||
// 行高,需要在实例加载完成前用到
|
||||
let rowHeight = 61
|
||||
@ -814,6 +843,7 @@
|
||||
metaCheckboxValues: {},
|
||||
multiSelectValues: {},
|
||||
searchSelectValues: {},
|
||||
searchSelectAsyncValues: {},
|
||||
// 绑定左侧选择框已选择的id
|
||||
selectedRowIds: [],
|
||||
// 存储被删除行的id
|
||||
@ -1048,6 +1078,10 @@
|
||||
this.inputValues = []
|
||||
this.rows = []
|
||||
this.deleteIds = []
|
||||
this.selectedRowIds = []
|
||||
this.tooltips = {}
|
||||
this.notPassedIds = []
|
||||
// 重置values
|
||||
this.selectValues = {}
|
||||
this.checkboxValues = {}
|
||||
this.jdateValues = {}
|
||||
@ -1055,14 +1089,16 @@
|
||||
this.departCompValues = {}
|
||||
this.userCompValues = {}
|
||||
this.slotValues = {}
|
||||
this.selectedRowIds = []
|
||||
this.tooltips = {}
|
||||
this.notPassedIds = []
|
||||
this.uploadValues = []
|
||||
this.popupValues = []
|
||||
this.radioValues = []
|
||||
this.multiSelectValues = []
|
||||
this.searchSelectValues = []
|
||||
//update-begin-author:shunjlei date:20210415 for:类型赋值错误
|
||||
this.uploadValues = {}
|
||||
this.popupValues = {}
|
||||
this.radioValues = {}
|
||||
this.multiSelectValues = {}
|
||||
this.searchSelectValues = {}
|
||||
this.searchSelectAsyncValues = {}
|
||||
//update-end-author:shunjlei date:20210415 for:类型赋值错误
|
||||
|
||||
// 重置滚动条
|
||||
this.scrollTop = 0
|
||||
this.$nextTick(() => {
|
||||
this.getElement('tbody').scrollTop = 0
|
||||
@ -1136,6 +1172,7 @@
|
||||
let radioValues = { ...this.radioValues }
|
||||
let multiSelectValues = { ...this.multiSelectValues }
|
||||
let searchSelectValues = { ...this.searchSelectValues }
|
||||
let searchSelectAsyncValues = { ...this.searchSelectAsyncValues }
|
||||
// 禁用行的id
|
||||
let disabledRowIds = (this.disabledRowIds || [])
|
||||
dataSource.forEach((data, newValueIndex) => {
|
||||
@ -1225,6 +1262,8 @@
|
||||
radioValues[inputId] = sourceValue
|
||||
} else if (column.type === FormTypes.sel_search) {
|
||||
searchSelectValues[inputId] = sourceValue
|
||||
} else if (column.type === FormTypes.sel_search_async) {
|
||||
searchSelectAsyncValues[inputId] = sourceValue
|
||||
} else if (column.type === FormTypes.list_multi) {
|
||||
if (typeof sourceValue === 'string' && sourceValue.length > 0) {
|
||||
multiSelectValues[inputId] = sourceValue.split(',')
|
||||
@ -1245,6 +1284,8 @@
|
||||
status: 'done',
|
||||
path: sourceValue
|
||||
}
|
||||
} else {
|
||||
uploadValues[inputId] = null
|
||||
}
|
||||
} else {
|
||||
value[column.key] = sourceValue
|
||||
@ -1309,6 +1350,7 @@
|
||||
this.radioValues = radioValues
|
||||
this.multiSelectValues = multiSelectValues
|
||||
this.searchSelectValues = searchSelectValues
|
||||
this.searchSelectAsyncValues = searchSelectAsyncValues
|
||||
// 重新计算所有统计列
|
||||
this.recalcAllStatisticsColumns()
|
||||
// 更新到 dom
|
||||
@ -1543,6 +1585,8 @@
|
||||
value[column.key] = this.radioValues[inputId]
|
||||
} else if (column.type === FormTypes.sel_search) {
|
||||
value[column.key] = this.searchSelectValues[inputId]
|
||||
} else if (column.type === FormTypes.sel_search_async) {
|
||||
value[column.key] = this.searchSelectAsyncValues[inputId]
|
||||
} else if (column.type === FormTypes.list_multi) {
|
||||
if (!this.multiSelectValues[inputId] || this.multiSelectValues[inputId].length === 0) {
|
||||
value[column.key] = ''
|
||||
@ -1671,6 +1715,7 @@
|
||||
radioValues: this.radioValues,
|
||||
multiSelectValues: this.multiSelectValues,
|
||||
searchSelectValues: this.searchSelectValues,
|
||||
searchSelectAsyncValues: this.searchSelectAsyncValues,
|
||||
})
|
||||
},
|
||||
/** 设置某行某列的值 */
|
||||
@ -1736,6 +1781,8 @@
|
||||
edited = this.setOneValue(this.multiSelectValues, modelKey, newValue, true)
|
||||
} else if (column.type === FormTypes.sel_search) {
|
||||
edited = this.setOneValue(this.searchSelectValues, modelKey, newValue)
|
||||
} else if (column.type === FormTypes.sel_search_async) {
|
||||
edited = this.setOneValue(this.searchSelectAsyncValues, modelKey, newValue)
|
||||
} else {
|
||||
edited = false
|
||||
}
|
||||
@ -2731,6 +2778,11 @@
|
||||
this.validateOneInput(value, row, column, this.notPassedIds, true, 'change')
|
||||
this.elemValueChange(FormTypes.sel_search, row, column, value)
|
||||
},
|
||||
handleSearchSelectAsyncChange(value, id, row, column) {
|
||||
this.searchSelectAsyncValues = this.bindValuesChange(value, id, 'searchSelectAsyncValues')
|
||||
this.validateOneInput(value, row, column, this.notPassedIds, true, 'change')
|
||||
this.elemValueChange(FormTypes.sel_search_async, row, column, value)
|
||||
},
|
||||
filterOption(input, option) {
|
||||
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
},
|
||||
@ -2992,6 +3044,8 @@
|
||||
border-bottom: @border;
|
||||
transition: background-color 300ms;
|
||||
width: 100%;
|
||||
height: 61px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
@ -3101,6 +3155,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
.comp-normal {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.j-td-span {
|
||||
position: relative;
|
||||
padding: 4px 11px;
|
||||
|
||||
@ -6,6 +6,13 @@
|
||||
:confirmLoading="uploading"
|
||||
@cancel="handleClose">
|
||||
|
||||
<div style="margin: 0px 0px 5px 1px" v-if="online">
|
||||
<span style="display: inline-block;height: 32px;line-height: 32px;vertical-align: middle;">是否开启校验:</span>
|
||||
<span style="display: inline-block;height: 32px;margin-left: 6px">
|
||||
<a-switch :checked="validateStatus==1" @change="handleChangeValidateStatus" checked-children="是" un-checked-children="否" size="small"/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<a-upload
|
||||
name="file"
|
||||
:multiple="true"
|
||||
@ -47,6 +54,12 @@
|
||||
type: String,
|
||||
default: '',
|
||||
required: false
|
||||
},
|
||||
//是否online导入
|
||||
online:{
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
data(){
|
||||
@ -55,7 +68,8 @@
|
||||
uploading:false,
|
||||
fileList:[],
|
||||
uploadAction:'',
|
||||
foreignKeys:''
|
||||
foreignKeys:'',
|
||||
validateStatus: 0
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -78,6 +92,7 @@
|
||||
this.uploading = false
|
||||
this.visible = true
|
||||
this.foreignKeys = arg;
|
||||
this.validateStatus = 0
|
||||
},
|
||||
handleRemove(file) {
|
||||
const index = this.fileList.indexOf(file);
|
||||
@ -98,6 +113,9 @@
|
||||
if(this.foreignKeys && this.foreignKeys.length>0){
|
||||
formData.append('foreignKeys',this.foreignKeys);
|
||||
}
|
||||
if(this.online==true){
|
||||
formData.append('validateStatus',this.validateStatus);
|
||||
}
|
||||
fileList.forEach((file) => {
|
||||
formData.append('files[]', file);
|
||||
});
|
||||
@ -105,14 +123,41 @@
|
||||
postAction(this.uploadAction, formData).then((res) => {
|
||||
this.uploading = false
|
||||
if(res.success){
|
||||
this.$message.success(res.message)
|
||||
if(res.code == 201){
|
||||
this.errorTip(res.message, res.result)
|
||||
}else{
|
||||
this.$message.success(res.message)
|
||||
}
|
||||
this.visible=false
|
||||
this.$emit('ok')
|
||||
}else{
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 是否开启校验 开关改变事件
|
||||
handleChangeValidateStatus(checked){
|
||||
this.validateStatus = checked==true?1:0
|
||||
},
|
||||
// 错误信息提示
|
||||
errorTip(tipMessage, fileUrl) {
|
||||
const h = this.$createElement;
|
||||
let href = window._CONFIG['domianURL'] + fileUrl
|
||||
this.$warning({
|
||||
title: '导入成功,但是有错误数据!',
|
||||
content: h('div', {}, [
|
||||
h('div', tipMessage),
|
||||
h('span', '具体详情请 '),
|
||||
h('a', {
|
||||
attrs: {
|
||||
href: href,
|
||||
target: '_blank'
|
||||
},
|
||||
},'点击下载'),
|
||||
]),
|
||||
onOk() {},
|
||||
});
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
ref="jPopupOnlReport"
|
||||
:code="code"
|
||||
:multi="multi"
|
||||
:sorter="sorter"
|
||||
:groupId="uniqGroupId"
|
||||
:param="param"
|
||||
@ok="callBack"
|
||||
@ -47,6 +48,11 @@
|
||||
default: '',
|
||||
required: false
|
||||
},
|
||||
/** 排序列,指定要排序的列,使用方式:列名=desc|asc */
|
||||
sorter: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 1200,
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
<a-upload
|
||||
name="file"
|
||||
:multiple="true"
|
||||
:multiple="multiple"
|
||||
:action="uploadAction"
|
||||
:headers="headers"
|
||||
:data="{'biz':bizPath}"
|
||||
@ -135,6 +135,10 @@
|
||||
required:false,
|
||||
default: true
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
watch:{
|
||||
value:{
|
||||
|
||||
@ -13,7 +13,7 @@ import JVxeDetailsModal from './JVxeDetailsModal'
|
||||
import JVxePagination from './JVxePagination'
|
||||
import { cloneObject, getVmParentByName, pushIfNotExist, randomString, simpleDebounce } from '@/utils/util'
|
||||
import { UtilTools } from 'vxe-table/packages/tools/src/utils'
|
||||
import { getNoAuthCols } from "@/utils/authFilter"
|
||||
import { getNoAuthCols } from '@/utils/authFilter'
|
||||
|
||||
export default {
|
||||
name: 'JVxeTable',
|
||||
@ -95,6 +95,9 @@ export default {
|
||||
// 是否异步删除行,如果你要实现异步删除,那么需要把这个选项开启,
|
||||
// 在remove事件里调用confirmRemove方法才会真正删除(除非删除的全是新增的行)
|
||||
asyncRemove: PropTypes.bool.def(false),
|
||||
// 是否一直显示组件,如果为false则只有点击的时候才出现组件
|
||||
// 注:该参数不能动态修改;如果行、列字段多的情况下,会根据机器性能造成不同程度的卡顿。
|
||||
alwaysEdit: PropTypes.bool.def(false),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -354,7 +357,7 @@ export default {
|
||||
col.visible = false
|
||||
} else if (enhanced.switches.editRender) {
|
||||
renderName = 'editRender'
|
||||
renderOptions.type = enhanced.switches.visible ? 'visible' : 'default'
|
||||
renderOptions.type = (enhanced.switches.visible || this.alwaysEdit) ? 'visible' : 'default'
|
||||
}
|
||||
} else {
|
||||
renderOptions.name = JVXETypes._prefix + JVXETypes.normal
|
||||
@ -1076,7 +1079,7 @@ export default {
|
||||
// 添加默认值
|
||||
xTable.tableFullColumn.forEach(column => {
|
||||
let col = column.own
|
||||
if (record[col.key] == null || record[col.key] === '') {
|
||||
if (col.key && (record[col.key] == null || record[col.key] === '')) {
|
||||
// 设置默认值
|
||||
let createValue = getEnhancedMixins(col.$type || col.type, 'createValue')
|
||||
record[col.key] = createValue({row: record, column, $table: xTable})
|
||||
|
||||
@ -55,7 +55,9 @@
|
||||
// 【组件增强】注释详见:JVxeCellMixins.js
|
||||
enhanced: {
|
||||
aopEvents: {
|
||||
editActived: event => dispatchEvent(event, 'ant-calendar-picker', el => el.children[0].dispatchEvent(event.$event)),
|
||||
editActived(event) {
|
||||
dispatchEvent.call(this, event, 'ant-calendar-picker', el => el.children[0].dispatchEvent(event.$event))
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
return this.rowIndex === 0
|
||||
},
|
||||
disabledMoveDown() {
|
||||
return this.rowIndex === (this.rows.length - 1)
|
||||
return this.rowIndex === (this.fullDataLength - 1)
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
@ -116,7 +116,9 @@
|
||||
// 【组件增强】注释详见:JVxeCellMixins.js
|
||||
enhanced: {
|
||||
aopEvents: {
|
||||
editActived: event => dispatchEvent(event, 'ant-select'),
|
||||
editActived(event) {
|
||||
dispatchEvent.call(this, event, 'ant-select')
|
||||
},
|
||||
},
|
||||
translate: {enabled: true},
|
||||
getValue(value) {
|
||||
|
||||
@ -23,7 +23,9 @@
|
||||
autofocus: '.ant-input',
|
||||
},
|
||||
aopEvents: {
|
||||
editActived: event => dispatchEvent(event, 'anticon-fullscreen'),
|
||||
editActived(event) {
|
||||
dispatchEvent.call(this, event, 'anticon-fullscreen')
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -36,6 +36,9 @@ export default {
|
||||
rows() {
|
||||
return this.params.data
|
||||
},
|
||||
fullDataLength() {
|
||||
return this.params.$table.tableFullData.length
|
||||
},
|
||||
rowIndex() {
|
||||
return this.params.rowIndex
|
||||
},
|
||||
@ -291,6 +294,10 @@ export function vModel(value, row, property) {
|
||||
|
||||
/** 模拟触发事件 */
|
||||
export function dispatchEvent({cell, $event}, className, handler) {
|
||||
// alwaysEdit 下不模拟触发事件,否者会导致触发两次
|
||||
if (this && this.alwaysEdit) {
|
||||
return
|
||||
}
|
||||
window.setTimeout(() => {
|
||||
let element = cell.getElementsByClassName(className)
|
||||
if (element && element.length > 0) {
|
||||
@ -298,9 +305,7 @@ export function dispatchEvent({cell, $event}, className, handler) {
|
||||
handler(element[0])
|
||||
} else {
|
||||
// 模拟触发点击事件
|
||||
console.log($event)
|
||||
if($event){
|
||||
console.log("$event===>",$event)
|
||||
element[0].dispatchEvent($event)
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ import JSlider from './JSlider.vue'
|
||||
import JSwitch from './JSwitch.vue'
|
||||
import JTime from './JTime.vue'
|
||||
import JTreeTable from './JTreeTable.vue'
|
||||
import JEasyCron from "@/components/jeecg/JEasyCron";
|
||||
|
||||
//jeecgbiz
|
||||
import JSelectDepart from '../jeecgbiz/JSelectDepart.vue'
|
||||
@ -71,5 +72,6 @@ export default {
|
||||
Vue.component('JSelectPosition', JSelectPosition)
|
||||
Vue.component('JSelectRole', JSelectRole)
|
||||
Vue.component('JSelectUserByDep', JSelectUserByDep)
|
||||
Vue.component(JEasyCron.name, JEasyCron)
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<a-modal
|
||||
title="corn表达式"
|
||||
title="cron表达式"
|
||||
:width="modalWidth"
|
||||
:visible="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
const MODAL_WIDTH = 1200;
|
||||
export default {
|
||||
name: 'JPopupOnlReport',
|
||||
props: ['multi', 'code', 'groupId', 'param'],
|
||||
props: ['multi', 'code', 'sorter', 'groupId', 'param'],
|
||||
components:{
|
||||
},
|
||||
data(){
|
||||
@ -122,8 +122,9 @@
|
||||
cgRpConfigId:"",
|
||||
modalWidth:MODAL_WIDTH,
|
||||
tableScroll:{x:true},
|
||||
dynamicParam:{}
|
||||
|
||||
dynamicParam:{},
|
||||
// 排序字段,默认无排序
|
||||
iSorter: null,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -139,7 +140,28 @@
|
||||
this.dynamicParamHandler()
|
||||
this.loadData();
|
||||
},
|
||||
}
|
||||
},
|
||||
sorter: {
|
||||
immediate: true,
|
||||
handler() {
|
||||
if (this.sorter) {
|
||||
let arr = this.sorter.split('=')
|
||||
if (arr.length === 2 && ['asc', 'desc'].includes(arr[1].toLowerCase())) {
|
||||
this.iSorter = {column: arr[0], order: arr[1].toLowerCase()}
|
||||
// 排序字段受控
|
||||
this.table.columns.forEach(col => {
|
||||
if (col.dataIndex === this.iSorter.column) {
|
||||
this.$set(col, 'sortOrder', this.iSorter.order === 'asc' ? 'ascend' : 'descend')
|
||||
} else {
|
||||
this.$set(col, 'sortOrder', false)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.warn('【JPopup】sorter参数不合法')
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
computed:{
|
||||
showSearchFlag(){
|
||||
@ -167,6 +189,10 @@
|
||||
return filterMultiDictText(this.dictOptions[dictCode], text+"");
|
||||
}
|
||||
}
|
||||
// 排序字段受控
|
||||
if (this.iSorter && currColumns[a].dataIndex === this.iSorter.column) {
|
||||
currColumns[a].sortOrder = this.iSorter.order === 'asc' ? 'ascend' : 'descend'
|
||||
}
|
||||
}
|
||||
this.table.columns = [...currColumns]
|
||||
this.initQueryInfo()
|
||||
@ -253,7 +279,7 @@
|
||||
paramTarget['self_'+key] = this.dynamicParam[key]
|
||||
})
|
||||
}
|
||||
let param = Object.assign(paramTarget, this.queryParam, this.sorter);
|
||||
let param = Object.assign(paramTarget, this.queryParam, this.iSorter);
|
||||
param.pageNo = this.table.pagination.current;
|
||||
param.pageSize = this.table.pagination.pageSize;
|
||||
return filterObj(param);
|
||||
@ -288,8 +314,18 @@
|
||||
handleChangeInTable(pagination, filters, sorter) {
|
||||
//分页、排序、筛选变化时触发
|
||||
if (Object.keys(sorter).length > 0) {
|
||||
this.sorter.column = sorter.field
|
||||
this.sorter.order = 'ascend' == sorter.order ? 'asc' : 'desc'
|
||||
this.iSorter = {
|
||||
column: sorter.field,
|
||||
order: 'ascend' === sorter.order ? 'asc' : 'desc'
|
||||
}
|
||||
// 排序字段受控
|
||||
this.table.columns.forEach(col => {
|
||||
if (col.dataIndex === sorter.field) {
|
||||
this.$set(col, 'sortOrder',sorter.order)
|
||||
} else {
|
||||
this.$set(col, 'sortOrder', false)
|
||||
}
|
||||
})
|
||||
}
|
||||
this.table.pagination = pagination
|
||||
this.loadData()
|
||||
|
||||
Reference in New Issue
Block a user