2023年4月16日 修复问题

This commit is contained in:
bai 2023-04-16 22:22:15 +08:00
parent c0fc2a41a8
commit 0db3bf2dbf
7 changed files with 332 additions and 649 deletions

View File

@ -1,7 +1,7 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #tableTitle>
<div></div>
</template>
@ -9,6 +9,8 @@
<TableAction :actions="getTableAction(record)"/>
</template>
</BasicTable>
<!-- 子页面 -->
<KcKechengbiaoListPage v-if="selectedRows[0]" :searchParam="{ id:selectedRows[0]?.kechengbiaoid , xnxq:'' }" isNoSearch/>
</div>
</template>
@ -21,6 +23,7 @@
import { Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined,CheckOutlined } from '@ant-design/icons-vue';
import KcKechengbiaoListPage from '/@/views/kc/ktgl/KcKechengbiaoList.vue';
const queryParam = ref<any>({});
//table
@ -32,6 +35,13 @@
canResize:false,
useSearchForm: false,
immediate: false,
clickToRowSelect: true,
rowSelection: {
type: 'radio'
},
pagination: {
pageSize: 5
},
actionColumn: {
width: 120,
fixed: 'right',
@ -42,7 +52,7 @@
},
},
});
const [registerTable, { reload}, { rowSelection, selectedRowKeys }] = tableContext;
const [registerTable, { reload}, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
const labelCol = reactive({
xs: { span: 24 },
sm: { span: 7 },

View File

@ -1,7 +1,7 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #tableTitle>
<div></div>
</template>
@ -9,6 +9,8 @@
<TableAction :actions="getTableAction(record)"/>
</template>
</BasicTable>
<!-- 子页面 -->
<KcKechengbiaoListPage v-if="selectedRows[0]" :searchParam="{ id:selectedRows[0]?.kechengbiaoid , xnxq:'' }" isNoSearch/>
</div>
</template>
@ -21,6 +23,7 @@
import { Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined,CheckOutlined } from '@ant-design/icons-vue';
import KcKechengbiaoListPage from '/@/views/kc/ktgl/KcKechengbiaoList.vue';
const queryParam = ref<any>({});
//table
@ -32,6 +35,13 @@
canResize:false,
useSearchForm: false,
immediate: false,
clickToRowSelect: true,
rowSelection: {
type: 'radio'
},
pagination: {
pageSize: 5
},
actionColumn: {
width: 120,
fixed: 'right',
@ -42,7 +52,7 @@
},
},
});
const [registerTable, { reload}, { rowSelection, selectedRowKeys }] = tableContext;
const [registerTable, { reload}, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
const labelCol = reactive({
xs: { span: 24 },
sm: { span: 7 },

View File

@ -1,7 +1,7 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #tableTitle>
<div></div>
</template>
@ -9,6 +9,8 @@
<TableAction :actions="getTableAction(record)"/>
</template>
</BasicTable>
<!-- 子页面 -->
<KcKechengbiaoListPage v-if="selectedRows[0]" :searchParam="{ id:selectedRows[0]?.kechengbiaoid , xnxq:'' }" isNoSearch/>
</div>
</template>
@ -21,6 +23,8 @@
import { Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined,CheckOutlined } from '@ant-design/icons-vue';
import KcKechengbiaoListPage from '/@/views/kc/ktgl/KcKechengbiaoList.vue';
const queryParam = ref<any>({});
//table
@ -32,6 +36,13 @@
canResize:false,
immediate: false,
useSearchForm: false,
clickToRowSelect: true,
rowSelection: {
type: 'radio'
},
pagination: {
pageSize: 5
},
actionColumn: {
width: 120,
fixed: 'right',
@ -42,7 +53,7 @@
},
},
});
const [registerTable, { reload}, { rowSelection, selectedRowKeys }] = tableContext;
const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
const labelCol = reactive({
xs: { span: 24 },
sm: { span: 7 },

View File

@ -1,128 +1,220 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
// import { render } from '/@/utils/common/renderUtils';
import { JVxeColumn, JVxeTypes } from '/@/components/jeecg/JVxeTable/types';
//列表数据
export const columns: BasicColumn[] = [
export const columns = <JVxeColumn[]>([
{
title: 'id',
align: "center",
width: '0',
dataIndex: 'id',
// ifShow: false,
},
{
title: '课程号',
align: "center",
title: '课程编号',
align: "left",
width: '300px',
dataIndex: 'kcbh'
key: 'kcbh',
},
{
title: '课程名称',
align: "center",
dataIndex: 'kcmc'
align: "left",
key: 'kcmc'
},
{
title: '授课教师',
align: "center",
dataIndex: 'skjs'
align: "left",
key: 'skjs'
},
{
title: '学科人数',
align: "center",
align: "left",
width: '80px',
dataIndex: 'xkrs'
key: 'xkrs'
},
{
title: '开课单位',
align: "center",
align: "left",
width: '100px',
dataIndex: 'kkdw_dictText'
key: 'kkdw_dictText'
},
{
title: '课程性质',
align: "center",
align: "left",
width: '105px',
dataIndex: 'kcxz_dictText'
key: 'kcxz_dictText'
},
{
title: '上课地点',
align: "center",
align: "left",
width: '100px',
dataIndex: 'skdd'
key: 'skdd'
},
{
title: '上课周次',
align: "center",
align: "left",
width: '100px',
dataIndex: 'jkzc_dictText'
key: 'jkzc_dictText'
},
{
title: '节次',
align: "center",
align: "left",
width: '70px',
dataIndex: 'hh_dictText'
key: 'hh_dictText'
},
{
title: '星期',
align: "center",
align: "left",
width: '70px',
dataIndex: 'week_dictText'
key: 'week_dictText'
},
{
title: '学分',
align: "center",
align: "left",
width: '50px',
dataIndex: 'xf'
key: 'xf'
},
{
title: '是否出镜',
align: "center",
dataIndex: 'sfcj',
edit: true,
editComponent: 'Select',
// editComponentProps: {
// // //选中
// checkedChildren: "是-",
// // checkedValue: 0,
// // //未选中
// unCheckedChildren:'否-',
// // unCheckedValue: 1,
// // onClick: (checked: boolean | string | number, event: Event) => {
// // event.stopPropagation();
// // console.log('选择后回调',checked,event);
// // }
// },
// editValueMap: (value) => value == '0'?'是':'否',
// editValueMap: (value) => value?'0':'1',
// format: (text) => ,C
editComponentProps: {
options: [
{ label: '是', value: 0, },
{ label: '否', value: 1, },
],
},
// customRender: (r) => r.text == 0?'是':'否'
key: 'sfcj',
type: JVxeTypes.selectSearch,
width: 100,
options: [
{ label: '是', value: 0, },
{ label: '否', value: 1, },
],
},
{
title: '上课形式',
align: "center",
dataIndex: 'skxs',
edit: true,
editComponent: 'Select',
editComponentProps: {
options: [
{ label: '线上', value: 0, },
{ label: '线下', value: 1, },
{ label: '线上线下混合', value: 2, },
],
},
// customRender: (r) => r.text == 0?'线上':r.text == 1?'线下':'线上线下混合'
key: 'skxs',
type: JVxeTypes.selectSearch,
width: 100,
options: [
{ label: '线上', value: 0, },
{ label: '线下', value: 1, },
{ label: '线上线下混合', value: 2, },
],
},
];
]);
// export const columns: BasicColumn[] = [
// {
// title: 'id',
// align: "center",
// width: '0',
// dataIndex: 'id',
// // ifShow: false,
// },
// {
// title: '课程号',
// align: "center",
// width: '300px',
// dataIndex: 'kcbh'
// },
// {
// title: '课程名称',
// align: "center",
// dataIndex: 'kcmc'
// },
// {
// title: '授课教师',
// align: "center",
// dataIndex: 'skjs'
// },
// {
// title: '学科人数',
// align: "center",
// width: '80px',
// dataIndex: 'xkrs'
// },
// {
// title: '开课单位',
// align: "center",
// width: '100px',
// dataIndex: 'kkdw_dictText'
// },
// {
// title: '课程性质',
// align: "center",
// width: '105px',
// dataIndex: 'kcxz_dictText'
// },
// {
// title: '上课地点',
// align: "center",
// width: '100px',
// dataIndex: 'skdd'
// },
// {
// title: '上课周次',
// align: "center",
// width: '100px',
// dataIndex: 'jkzc_dictText'
// },
// {
// title: '节次',
// align: "center",
// width: '70px',
// dataIndex: 'hh_dictText'
// },
// {
// title: '星期',
// align: "center",
// width: '70px',
// dataIndex: 'week_dictText'
// },
// {
// title: '学分',
// align: "center",
// width: '50px',
// dataIndex: 'xf'
// },
// {
// title: '是否出镜',
// align: "center",
// dataIndex: 'sfcj',
// edit: true,
// editComponent: 'Select',
// // editComponentProps: {
// // // //选中
// // checkedChildren: "是-",
// // // checkedValue: 0,
// // // //未选中
// // unCheckedChildren:'否-',
// // // unCheckedValue: 1,
// // // onClick: (checked: boolean | string | number, event: Event) => {
// // // event.stopPropagation();
// // // console.log('选择后回调',checked,event);
// // // }
// // },
// // editValueMap: (value) => value == '0'?'是':'否',
// // editValueMap: (value) => value?'0':'1',
// // format: (text) => ,C
// editComponentProps: {
// options: [
// { label: '是', value: 0, },
// { label: '否', value: 1, },
// ],
// },
// // customRender: (r) => r.text == 0?'是':'否'
// },
// {
// title: '上课形式',
// align: "center",
// dataIndex: 'skxs',
// edit: true,
// editComponent: 'Select',
// editComponentProps: {
// options: [
// { label: '线上', value: 0, },
// { label: '线下', value: 1, },
// { label: '线上线下混合', value: 2, },
// ],
// },
// // customRender: (r) => r.text == 0?'线上':r.text == 1?'线下':'线上线下混合'
// },
// ];
//查询数据
export const searchFormSchema: FormSchema[] = [

View File

@ -1,7 +1,7 @@
<template>
<div>
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<div class="jeecg-basic-table-form-container" v-if="!props.isNoSearch">
<a-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="8">
@ -56,12 +56,9 @@
<vxe-toolbar>
<template #buttons>
<a-button type="primary" class="pl1r" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" class="pl1r" @click="handleAdd" preIcon="ant-design:plus-outlined" v-if="!props.isNoSearch"> 新增</a-button>
<a-button type="primary" class="pl1r" @click="handleEdit" preIcon="ant-design:plus-outlined"> 修改</a-button>
<a-button type="danger" class="pl1r" @click="batchHandleDelete" preIcon="ant-design:delete-outlined">删除</a-button>
<!-- <vxe-button @click="insertEvent">新增</vxe-button>
<vxe-button @click="$refs.xTable.removeCheckboxRow()">删除选中</vxe-button>
<vxe-button @click="saveEvent">保存</vxe-button> -->
</template>
</vxe-toolbar>
<JVxeTable
@ -77,208 +74,47 @@
:columns="columns"
:pagination="pagination"
style="margin-top: 8px"
@pageChange="handlePageChange"
@valueChange="valueChange"
@selectRowChange="selectRowChange"
@page-change="handlePageChange"
@value-change="valueChange"
@select-row-change="selectRowChange"
>
<!-- @save="save"
@added="added"
@removed="removed"
@inserted="inserted"
@dragged="dragged" -->
<template #toolbarSuffix>
<!-- <a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" @click="handleEdit" preIcon="ant-design:plus-outlined"> 修改</a-button>
<a-button type="danger" @click="batchHandleDelete" preIcon="ant-design:delete-outlined">删除</a-button> -->
<!-- <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button>批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown> -->
</template>
</JVxeTable>
<!--引用表格-->
<!-- 表单区域 -->
<KcKechengbiaoModal ref="registerModal" @success="handleSuccess"></KcKechengbiaoModal>
<!-- -{{ selectedRows }}- -->
<!--引用表格-->
<KcKetangbiaoList v-show="selectedRows[0]" :currentRowKey="selectedRows[0]"/>
</div>
</template>
<script lang="ts" name="ktgl-kcKechengbiao" setup>
import { ref, reactive, onMounted } from 'vue';
import { ref, reactive, onMounted, watch } from 'vue';
// import { BasicTable, useTable, TableAction } from '/@/components/Table';
// import { useListPage } from '/@/ho oks/system/useListPage';
import { propTypes } from '/@/utils/propTypes';
import { useMessage } from '/@/hooks/web/useMessage';
// import { columns } from './KcKechengbiao.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, saveOrUpdate } from './KcKechengbiao.api';
// import { downloadFile } from '/@/utils/common/renderUtils';
import { columns } from './KcKechengbiao.data';
import { list, batchDelete, saveOrUpdate } from './KcKechengbiao.api';
import KcKechengbiaoModal from './components/KcKechengbiaoModal.vue'
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import KcKetangbiaoList from './KcKetangbiaoList.vue'
import { JVxeColumn, JVxeTableInstance, JVxeTypes } from '/@/components/jeecg/JVxeTable/types';
import { JVxeTableInstance } from '/@/components/jeecg/JVxeTable/types';
import { filterObj } from '/@/utils/common/compUtils';
// import { random } from 'lodash-es';
// import { buildUUID } from '/@/utils/uuid';
// import { uploadUrl } from '/@/api/common/api';
//-----------------------------------------------------------------------------------------------------------------
const props = defineProps({
searchParam: propTypes.object.def({}),
isNoSearch: propTypes.bool.def(false)
});
const tableRef = ref<JVxeTableInstance>();
// const { createMessage } = useMessage();
const loading = ref(false);
const columns = ref<JVxeColumn[]>([
// {
// title: '_',
// key: 'select_dict_search',
// type: JVxeTypes.selectDictSearch,
// width: 200,
// async: true, // true
// // ,,
// dict: 'sys_user,realname,username',
// tipsContent: '',
// },
// {
// title: '',
// key: 'radio',
// type: JVxeTypes.radio,
// width: 130,
// options: [
// { text: '', value: '1' },
// { text: '', value: '2' },
// ],
// //
// allowClear: false,
// },
{
title: '课程编号',
align: "left",
width: '300px',
key: 'kcbh',
},
{
title: '课程名称',
align: "left",
key: 'kcmc'
},
{
title: '授课教师',
align: "left",
key: 'skjs'
},
{
title: '学科人数',
align: "left",
width: '80px',
key: 'xkrs'
},
{
title: '开课单位',
align: "left",
width: '100px',
key: 'kkdw_dictText'
},
{
title: '课程性质',
align: "left",
width: '105px',
key: 'kcxz_dictText'
},
{
title: '上课地点',
align: "left",
width: '100px',
key: 'skdd'
},
{
title: '上课周次',
align: "left",
width: '100px',
key: 'jkzc_dictText'
},
{
title: '节次',
align: "left",
width: '70px',
key: 'hh_dictText'
},
{
title: '星期',
align: "left",
width: '70px',
key: 'week_dictText'
},
{
title: '学分',
align: "left",
width: '50px',
key: 'xf'
},
const selectedRows = ref([]);
const selectedRowKeys = ref([]);
{
title: '是否出镜',
key: 'sfcj',
type: JVxeTypes.selectSearch,
width: 100,
options: [
{ label: '是', value: 0, },
{ label: '否', value: 1, },
],
},
{
title: '上课形式',
key: 'skxs',
type: JVxeTypes.selectSearch,
width: 100,
options: [
{ label: '线上', value: 0, },
{ label: '线下', value: 1, },
{ label: '线上线下混合', value: 2, },
],
},
// {
// title: '',
// align: "center",
// dataIndex: 'sfcj',
// edit: true,
// editComponent: 'Select',
// editComponentProps: {
// options: [
// { label: '', value: 0, },
// { label: '', value: 1, },
// ],
// },
// },
// {
// title: '',
// align: "center",
// dataIndex: 'skxs',
// edit: true,
// editComponent: 'Select',
// editComponentProps: {
// options: [
// { label: '线', value: 0, },
// { label: '线', value: 1, },
// { label: '线线', value: 2, },
// ],
// },
// },
]);
const dataSource = ref<any[]>([]);
const pagination = reactive({
current: 1,
@ -287,243 +123,115 @@
total: 0,
});
// randomPage(pagination.current, pagination.pageSize, true);
const queryParam = ref<any>({ });
const filterInfo = ref<any>({ xnxq: '2022-2023-2' });
const registerModal = ref();
//
// function handlePageChange(...e) {
// alert('????')
// console.log('handlePageChange','?????????');
// //{current, pageSize }
// console.log('handlePageChange',e);
const labelCol = reactive({ xs: { span: 24 }, sm: { span: 7 }, });
const wrapperCol = reactive({ xs: { span: 24 }, sm: { span: 16 }, });
//
// pagination.current = current;
// pagination.pageSize = pageSize;
//
// loadData(1);
// randomPage(event.current, event.pageSize, true);
// }
const { createMessage } = useMessage();
// function save() {
// console.log('save',...data);
// }
// function added(...data) {
// console.log('added',...data);
// }
// function removed(...data) {
// console.log('removed',...data);
// }
// function inserted(...data) {
// console.log('inserted',...data);
// }
// function dragged(...data) {
// console.log('dragged',...data);
// }
function selectRowChange({ selectedRowIds, selectedRows: rows, $table }) {
console.log(`🚀 --------------------------------------------------------------------🚀`);
console.log(`🚀 ~ file: KcKechengbiaoList.vue:323 ~ selectRowChange ~ rows:`, rows,selectedRows);
console.log(`🚀 --------------------------------------------------------------------🚀`);
if(rows && rows[0]){
selectedRows.value = Array<never>(rows[0])
}else{
selectedRows.value = [];
}
// console.log('selectRowChange',selectedRowIds,rows, tableRef);
// //action == selected
// if(rows && rows.length){
// let id = rows[0]?.id
// // let { row } = tableRef.value!.getIfRowById(id)
// let row = dataSource.value.filter(x => x.id == id);
// console.log(`🚀 ------------------------------------------------------------------🚀`);
// console.log(`🚀 ~ file: KcKechengbiaoList.vue:330 ~ selectRowChange ~ row:`, row);
// console.log(`🚀 ------------------------------------------------------------------🚀`);
// $table.clearCheckboxRow().then(() => {
// $table.setCheckboxRow(row,true);
// })
// console.log(`🚀 ------------------------------------------------------------------🚀`);
// console.log(`🚀 ~ file: KcKechengbiaoList.vue:329 ~ selectRowChange ~ row:`, row);
// console.log(`🚀 ------------------------------------------------------------------🚀`);
// }
// tableRef.value!.toggleCheckboxRow(rows[0])
// if(selectedRowIds.length == 2){
// selectedRowKeys.value = Array<never>(selectedRowIds[0]);
// selectedRows.value = Array<never>(rows[0]);
// }else{
// selectedRowKeys.value = selectedRowIds[0];
// selectedRows.value = rows[0];
// }
//--------------------------------------END------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
}
function handlePageChange(event) {
console.log('pageChange',event);
//
pagination.current = event.current;
pagination.pageSize = event.pageSize;
//
loadData(null);
}
function valueChange({ value, col, row }) {
// console.log('valueChange',...data);
//
// temp1.value
let key = col?.key
let id = row?.id
saveByCell({ value, key, id })
}
/** 获取值,忽略表单验证 */
function handleTableGet() {
const values = tableRef.value!.getTableData();
console.log('获取值:', { values });
createMessage.success('获取值成功,请看控制台输出');
}
/* 随机生成分页数据 */
// function randomPage(current, pageSize, $loading = false) {
// if ($loading) {
// loading.value = true;
// }
// let begin = Date.now();
// let values: any[] = [];
// for (let i = 0; i < pageSize; i++) {
// let radio = random(0, 2);
// values.push({
// id: buildUUID(),
// select_dict_search: ['admin', '', 'jeecg'][random(0, 2)],
// progress: random(0, 100),
// radio: radio ? radio.toString() : null,
// });
// }
// dataSource.value = values;
// let end = Date.now();
// let diff = end - begin;
// if ($loading && diff < pageSize) {
// setTimeout(() => (loading.value = false), pageSize - diff);
// }
// }
const selectedRows = ref([]);
const selectedRowKeys = ref([]);
// const reload = () => {}
onMounted(() => {
loadData(1);
})
function reload() {
//
loadData(1);
}
function loadData(pageNo:any | null | undefined){
watch(() => props.searchParam, async (newRow, oldRow) => {
reload();
});
//--------------------------------------END---------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
function loadData(pageNo?){
loading.value = true;
if(pageNo == 1){
pagination.current = 1;
}
//
let { current, pageSize } = pagination;
let param = { column: 'createTime', order: 'desc', pageNo: current, pageSize, ...queryParam.value, ...filterInfo.value }
// let param = Object.assign({ column: 'createTime', order: 'desc', current, pageSize },filterObj(queryParam.value));
list(param).then(res => {
console.log(`🚀 -------------------------------------------------------🚀`);
console.log(`🚀 ~ file: KcKechengbiaoList.vue:323 ~ list ~ res:`, res);
console.log(`🚀 -------------------------------------------------------🚀`);
dataSource.value = res?.records??[]
pagination.total = res?.total??0
let param = { column: 'createTime', order: 'desc', pageNo: current, pageSize, ...queryParam.value, ...filterInfo.value, ...props.searchParam }
list(filterObj(param)).then(res => {
dataSource.value = res?.records??[];
pagination.total = res?.total??0;
//
if(props.isNoSearch){
selectedRows.value = Array<never>(dataSource.value[0]);
console.log('tableRef =>',tableRef);
}
}).finally(() => {
// loading
loading.value = false;
});
}
//
function saveByCell({ value, key, id }) {
createMessage.loading({ content: `正在保存!`, key: '_save_fake_data', duration: 0, });
const params = { id, };
params[key] = value;
return new Promise((resolve) => {
saveOrUpdate(params ,true).then(res => {
if (res.success) {
createMessage.success({ content: `记录已保存`, key: '_save_fake_data', duration: 2, });
resolve(true);
} else {
createMessage.error({ content: `保存失败:${res.message}`, key: '_save_fake_data', duration: 2, });
resolve(false);
}
});
});
}
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
function selectRowChange({ selectedRows: rows, $table }) {
if(rows && rows[0]){
selectedRows.value = Array<never>(rows[0])
}else{
selectedRows.value = [];
}
}
function handlePageChange(event) {
// ,
pagination.current = event.current;
pagination.pageSize = event.pageSize;
//
loadData();
}
function valueChange({ value, col, row }) {
let key = col?.key
let id = row?.id
//
saveByCell({ value, key, id })
}
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
// async function loadData() {
// loading.value = true;
// //
// await defHttp
// .get({
// //
// url: Api.getData,
// //
// params: {
// pageNo: pagination.current,
// pageSize: pagination.pageSize,
// },
// })
// .then((result) => {
// // total
// pagination.total = result.total;
// // dataSource
// dataSource.value = result.records;
// //
// selectedRows.value = [];
// })
// .finally(() => {
// // loading
// loading.value = false;
// });
// }
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
queryParam.value = {};
selectedRowKeys.value = [];
//
reload();
}
const queryParam = ref<any>({ });
const filterInfo = ref<any>({ xnxq: '2022-2023-2' });
//kkdwid, week, hh, kcbh
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
//table
// const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
// tableProps: {
// title: '-',
// api: list,
// columns,
// canResize:false,
// useSearchForm: false,
// showIndexColumn: true,
// showActionColumn: false,
// clickToRowSelect: true,
// rowSelection: {
// type: 'radio'
// },
// pagination: {
// pageSize: 5
// },
// actionColumn: {
// width: 120,
// fixed: 'right',
// },
// beforeFetch: (params) => {
// params.column = '',params.order = '';//
// return Object.assign(params, { ...queryParam.value, ...filterInfo.value});
// },
// },
// exportConfig: {
// name: "-",
// url: getExportUrl,
// },
// importConfig: {
// url: getImportUrl,
// success: handleSuccess
// },
// });
// const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
const labelCol = reactive({
xs: { span: 24 },
sm: { span: 7 },
});
const wrapperCol = reactive({
xs: { span: 24 },
sm: { span: 16 },
});
const { createMessage } = useMessage();
//
function reload() {
loadData(1);
}
/**
* 新增事件
@ -546,21 +254,6 @@
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
@ -580,141 +273,7 @@
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
}
}
]
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
queryParam.value = {};
selectedRowKeys.value = [];
//
reload();
}
function handleEditEnd({ record, index, key, value }: Recordable) {
console.log(record, index, key, value);
return false;
}
//
function saveByCell({ value, key, id }) {
createMessage.loading({
content: `正在保存!`,
key: '_save_fake_data',
duration: 0,
});
const params = {
id,
};
params[key] = value;
return new Promise((resolve) => {
saveOrUpdate(params ,true).then(res => {
if (res.success) {
createMessage.success({
content: `记录已保存`,
key: '_save_fake_data',
duration: 2,
});
resolve(true);
} else {
createMessage.error({
content: `保存失败:${res.message}`,
key: '_save_fake_data',
duration: 2,
});
resolve(false);
}
});
});
}
async function beforeEditSubmit({ record, index, key, value }) {
console.log('单元格数据正在准备提交', { record, index, key, value });
return await saveByCell({ id: record.id, key, value });
}
function handleEditCancel() {
console.log('cancel');
}
// function handleEditEnd({ record, index, key, value }: Recordable) {
// console.log(record, index, key, value);
// return false;
// }
// async function beforeEditSubmit({ record, index, key, value }) {
// console.log('', record, index, key, value );
// createMessage.loading({
// content: `${key}`,
// key: '_save_fake_data',
// duration: 0,
// });
// return await new Promise((resolve) => {
// setTimeout(() => {
// if (value === '') {
// createMessage.error({
// content: '',
// key: '_save_fake_data',
// duration: 2,
// });
// resolve(false);
// } else {
// createMessage.success({
// content: `${key}`,
// key: '_save_fake_data',
// duration: 2,
// });
// resolve(true);
// }
// }, 2000);
// });
// }
// function handleEditCancel() {
// console.log('cancel');
// }
//-----------------------------------------------------------------------------------------------------------------
</script>

View File

@ -114,6 +114,7 @@
canResize:false,
useSearchForm: false,
showActionColumn: false,
clickToRowSelect: true,
rowSelection: {
type: 'radio'
},