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> <template>
<div> <div>
<!--引用表格--> <!--引用表格-->
<BasicTable @register="registerTable"> <BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #tableTitle> <template #tableTitle>
<div></div> <div></div>
</template> </template>
@ -9,6 +9,8 @@
<TableAction :actions="getTableAction(record)"/> <TableAction :actions="getTableAction(record)"/>
</template> </template>
</BasicTable> </BasicTable>
<!-- 子页面 -->
<KcKechengbiaoListPage v-if="selectedRows[0]" :searchParam="{ id:selectedRows[0]?.kechengbiaoid , xnxq:'' }" isNoSearch/>
</div> </div>
</template> </template>
@ -21,6 +23,7 @@
import { Modal } from 'ant-design-vue'; import { Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined,CheckOutlined } from '@ant-design/icons-vue'; import { ExclamationCircleOutlined,CheckOutlined } from '@ant-design/icons-vue';
import KcKechengbiaoListPage from '/@/views/kc/ktgl/KcKechengbiaoList.vue';
const queryParam = ref<any>({}); const queryParam = ref<any>({});
//table //table
@ -32,6 +35,13 @@
canResize:false, canResize:false,
useSearchForm: false, useSearchForm: false,
immediate: false, immediate: false,
clickToRowSelect: true,
rowSelection: {
type: 'radio'
},
pagination: {
pageSize: 5
},
actionColumn: { actionColumn: {
width: 120, width: 120,
fixed: 'right', fixed: 'right',
@ -42,7 +52,7 @@
}, },
}, },
}); });
const [registerTable, { reload}, { rowSelection, selectedRowKeys }] = tableContext; const [registerTable, { reload}, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
const labelCol = reactive({ const labelCol = reactive({
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 7 }, sm: { span: 7 },
@ -67,7 +77,7 @@
function handleSuccess() { function handleSuccess() {
(selectedRowKeys.value = []) && reload(); (selectedRowKeys.value = []) && reload();
} }
/** /**
* 操作栏 * 操作栏
*/ */
@ -79,7 +89,7 @@
}, },
]; ];
} }
function handleEdit(record: Recordable) { function handleEdit(record: Recordable) {
Modal.confirm({ Modal.confirm({
icon: createVNode({}), icon: createVNode({}),
@ -114,7 +124,7 @@
function searchQuery() { function searchQuery() {
reload(); reload();
} }
/** /**
* 重置 * 重置
*/ */
@ -124,7 +134,7 @@
// //
reload(); reload();
} }
defineExpose({ defineExpose({
zbLoadData zbLoadData

View File

@ -105,7 +105,7 @@
registerModal.value.disableSubmit = false; registerModal.value.disableSubmit = false;
registerModal.value.add(); registerModal.value.add();
} }
/** /**
* 编辑事件 * 编辑事件
*/ */
@ -113,7 +113,7 @@
registerModal.value.disableSubmit = false; registerModal.value.disableSubmit = false;
registerModal.value.edit(record); registerModal.value.edit(record);
} }
/** /**
* 详情 * 详情
*/ */
@ -121,28 +121,28 @@
registerModal.value.disableSubmit = true; registerModal.value.disableSubmit = true;
registerModal.value.edit(record); registerModal.value.edit(record);
} }
/** /**
* 删除事件 * 删除事件
*/ */
async function handleDelete(record) { async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess); await deleteOne({ id: record.id }, handleSuccess);
} }
/** /**
* 批量删除事件 * 批量删除事件
*/ */
async function batchHandleDelete() { async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess); await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
} }
/** /**
* 成功回调 * 成功回调
*/ */
function handleSuccess() { function handleSuccess() {
(selectedRowKeys.value = []) && reload(); (selectedRowKeys.value = []) && reload();
} }
/** /**
* 操作栏 * 操作栏
*/ */
@ -154,7 +154,7 @@
}, },
]; ];
} }
/** /**
* 下拉操作栏 * 下拉操作栏
*/ */
@ -179,7 +179,7 @@
function searchQuery() { function searchQuery() {
reload(); reload();
} }
/** /**
* 重置 * 重置
*/ */
@ -189,7 +189,7 @@
// //
reload(); reload();
} }

View File

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

View File

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

View File

@ -1,128 +1,220 @@
import {BasicColumn} from '/@/components/Table'; import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table'; import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator'; 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', title: '课程编号',
align: "center", align: "left",
width: '0',
dataIndex: 'id',
// ifShow: false,
},
{
title: '课程号',
align: "center",
width: '300px', width: '300px',
dataIndex: 'kcbh' key: 'kcbh',
}, },
{ {
title: '课程名称', title: '课程名称',
align: "center", align: "left",
dataIndex: 'kcmc' key: 'kcmc'
}, },
{ {
title: '授课教师', title: '授课教师',
align: "center", align: "left",
dataIndex: 'skjs' key: 'skjs'
}, },
{ {
title: '学科人数', title: '学科人数',
align: "center", align: "left",
width: '80px', width: '80px',
dataIndex: 'xkrs' key: 'xkrs'
}, },
{ {
title: '开课单位', title: '开课单位',
align: "center", align: "left",
width: '100px', width: '100px',
dataIndex: 'kkdw_dictText' key: 'kkdw_dictText'
}, },
{ {
title: '课程性质', title: '课程性质',
align: "center", align: "left",
width: '105px', width: '105px',
dataIndex: 'kcxz_dictText' key: 'kcxz_dictText'
}, },
{ {
title: '上课地点', title: '上课地点',
align: "center", align: "left",
width: '100px', width: '100px',
dataIndex: 'skdd' key: 'skdd'
}, },
{ {
title: '上课周次', title: '上课周次',
align: "center", align: "left",
width: '100px', width: '100px',
dataIndex: 'jkzc_dictText' key: 'jkzc_dictText'
}, },
{ {
title: '节次', title: '节次',
align: "center", align: "left",
width: '70px', width: '70px',
dataIndex: 'hh_dictText' key: 'hh_dictText'
}, },
{ {
title: '星期', title: '星期',
align: "center", align: "left",
width: '70px', width: '70px',
dataIndex: 'week_dictText' key: 'week_dictText'
}, },
{ {
title: '学分', title: '学分',
align: "center", align: "left",
width: '50px', width: '50px',
dataIndex: 'xf' key: 'xf'
}, },
{ {
title: '是否出镜', title: '是否出镜',
align: "center", key: 'sfcj',
dataIndex: 'sfcj', type: JVxeTypes.selectSearch,
edit: true, width: 100,
editComponent: 'Select', options: [
// editComponentProps: { { label: '是', value: 0, },
// // //选中 { label: '否', value: 1, },
// 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: '上课形式', title: '上课形式',
align: "center", key: 'skxs',
dataIndex: 'skxs', type: JVxeTypes.selectSearch,
edit: true, width: 100,
editComponent: 'Select', options: [
editComponentProps: { { label: '线上', value: 0, },
options: [ { label: '线下', value: 1, },
{ label: '线上', value: 0, }, { label: '线上线下混合', value: 2, },
{ label: '线下', value: 1, }, ],
{ label: '线上线下混合', value: 2, },
],
},
// customRender: (r) => r.text == 0?'线上':r.text == 1?'线下':'线上线下混合'
}, },
]; ]);
// 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[] = [ export const searchFormSchema: FormSchema[] = [

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <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-form @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :lg="8"> <a-col :lg="8">
@ -56,12 +56,9 @@
<vxe-toolbar> <vxe-toolbar>
<template #buttons> <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="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> <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> </template>
</vxe-toolbar> </vxe-toolbar>
<JVxeTable <JVxeTable
@ -77,208 +74,47 @@
:columns="columns" :columns="columns"
:pagination="pagination" :pagination="pagination"
style="margin-top: 8px" style="margin-top: 8px"
@pageChange="handlePageChange" @page-change="handlePageChange"
@valueChange="valueChange" @value-change="valueChange"
@selectRowChange="selectRowChange" @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> </JVxeTable>
<!--引用表格-->
<!-- 表单区域 --> <!-- 表单区域 -->
<KcKechengbiaoModal ref="registerModal" @success="handleSuccess"></KcKechengbiaoModal> <KcKechengbiaoModal ref="registerModal" @success="handleSuccess"></KcKechengbiaoModal>
<!-- -{{ selectedRows }}- --> <!--引用表格-->
<KcKetangbiaoList v-show="selectedRows[0]" :currentRowKey="selectedRows[0]"/> <KcKetangbiaoList v-show="selectedRows[0]" :currentRowKey="selectedRows[0]"/>
</div> </div>
</template> </template>
<script lang="ts" name="ktgl-kcKechengbiao" setup> <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 { BasicTable, useTable, TableAction } from '/@/components/Table';
// import { useListPage } from '/@/ho oks/system/useListPage'; // import { useListPage } from '/@/ho oks/system/useListPage';
import { propTypes } from '/@/utils/propTypes';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
// import { columns } from './KcKechengbiao.data'; import { columns } from './KcKechengbiao.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, saveOrUpdate } from './KcKechengbiao.api'; import { list, batchDelete, saveOrUpdate } from './KcKechengbiao.api';
// import { downloadFile } from '/@/utils/common/renderUtils';
import KcKechengbiaoModal from './components/KcKechengbiaoModal.vue' import KcKechengbiaoModal from './components/KcKechengbiaoModal.vue'
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import KcKetangbiaoList from './KcKetangbiaoList.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 { 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 tableRef = ref<JVxeTableInstance>();
// const { createMessage } = useMessage();
const loading = ref(false); 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,
// },
{ const selectedRows = ref([]);
title: '课程编号', const selectedRowKeys = ref([]);
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'
},
{
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 dataSource = ref<any[]>([]);
const pagination = reactive({ const pagination = reactive({
current: 1, current: 1,
@ -287,243 +123,115 @@
total: 0, total: 0,
}); });
// randomPage(pagination.current, pagination.pageSize, true); const queryParam = ref<any>({ });
const filterInfo = ref<any>({ xnxq: '2022-2023-2' });
const registerModal = ref();
// const labelCol = reactive({ xs: { span: 24 }, sm: { span: 7 }, });
// function handlePageChange(...e) { const wrapperCol = reactive({ xs: { span: 24 }, sm: { span: 16 }, });
// alert('????')
// console.log('handlePageChange','?????????');
// //{current, pageSize }
// console.log('handlePageChange',e);
// const { createMessage } = useMessage();
// pagination.current = current;
// pagination.pageSize = pageSize;
//
// loadData(1);
// randomPage(event.current, event.pageSize, true);
// }
// function save() { //--------------------------------------END------------------------------------------------------------------------
// 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];
// }
}
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(() => { onMounted(() => {
loadData(1); loadData(1);
}) })
function reload() {
// watch(() => props.searchParam, async (newRow, oldRow) => {
loadData(1); reload();
} });
function loadData(pageNo:any | null | undefined){ //--------------------------------------END---------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
function loadData(pageNo?){
loading.value = true; loading.value = true;
if(pageNo == 1){ if(pageNo == 1){
pagination.current = 1; pagination.current = 1;
} }
// //
let { current, pageSize } = pagination; let { current, pageSize } = pagination;
let param = { column: 'createTime', order: 'desc', pageNo: current, pageSize, ...queryParam.value, ...filterInfo.value } let param = { column: 'createTime', order: 'desc', pageNo: current, pageSize, ...queryParam.value, ...filterInfo.value, ...props.searchParam }
// let param = Object.assign({ column: 'createTime', order: 'desc', current, pageSize },filterObj(queryParam.value)); list(filterObj(param)).then(res => {
list(param).then(res => { dataSource.value = res?.records??[];
console.log(`🚀 -------------------------------------------------------🚀`); pagination.total = res?.total??0;
console.log(`🚀 ~ file: KcKechengbiaoList.vue:323 ~ list ~ res:`, res); //
console.log(`🚀 -------------------------------------------------------🚀`); if(props.isNoSearch){
dataSource.value = res?.records??[] selectedRows.value = Array<never>(dataSource.value[0]);
pagination.total = res?.total??0 console.log('tableRef =>',tableRef);
}
}).finally(() => { }).finally(() => {
// loading // loading
loading.value = false; 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 function searchQuery() {
// .get({ reload();
// // }
// 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 searchReset() {
queryParam.value = {};
selectedRowKeys.value = [];
//
reload();
}
const queryParam = ref<any>({ }); //
const filterInfo = ref<any>({ xnxq: '2022-2023-2' }); function reload() {
//kkdwid, week, hh, kcbh loadData(1);
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();
/** /**
* 新增事件 * 新增事件
@ -546,21 +254,6 @@
registerModal.value.edit(record); 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(); (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> </script>

View File

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