123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- import React, { Key, useEffect, useState } from "react";
- import { Input, Select } from 'antd'
- import { KCIMTable } from "@/components/KCIMTable";
- import { createFromIconfontCN } from "@ant-design/icons";
- import { EditableProTable, ModalForm, ProColumns, ProFormSelect, ProFormText } from "@ant-design/pro-components";
- import { set } from "lodash";
- import { getHasSetParamsList, getParamsSelectableList } from "./service";
- import { RecordKey } from "@ant-design/pro-utils/es/useEditableArray";
- // import './style.less';
- interface TableSelecterProps {
- record: any
- }
- const IconFont = createFromIconfontCN({
- scriptUrl: '',
- });
- const EditTableModal = ({ record, open, title, onVisibleChange, rowKey = 'id', onFinish }: {
- record: any, open: boolean, title: string, onVisibleChange: (bool: boolean) => void,
- rowKey?: string, onFinish?: (selectedRows: any[]) => void
- }) => {
- const Table = React.forwardRef(({ }: TableSelecterProps, ref) => {
- const [datasource, set_datasource] = useState<any[]>([]);
- let currentSelectedRow:undefined|any = undefined;
- const columns: ProColumns[] = [
- {
- title: '分摊参数',
- dataIndex: 'shareParamCode',
- ellipsis:true,
- valueType:'select',
- request:async ()=>{
- const resp = await getParamsSelectableList({pageSize:500,current:1,id:record.id});
- if(resp){
- return resp.list.map((a:any)=>({label: a.shareParamName,value: a.shareParamCode,id:a.id}))
- }
- return []
- },
- fieldProps:{
- showSearch:true,
- style: {
- width: '160px', // 设置你想要的宽度
- },
- onSelect:(a: any,b: any,c:any)=>{
- currentSelectedRow = b;
- }
- }
- },
- {
- title: '分摊比例',
- dataIndex: 'shareParamPopout',
- ellipsis:true,
- valueType:'digit'
- },
- {
- title: '操作',
- valueType: 'option',
- render: (text, record, _, action) => [
- <a
- key="editable"
- onClick={() => {
- action?.startEditable?.(record.id);
- }}
- >
- 编辑
- </a>,
- <a
- key="delete"
- onClick={() => {
- set_datasource(datasource.filter((item) => item.id !== record.id));
- }}
- >
- 删除
- </a>,
- ],
- },
- ];
- const saveHandle = async () => {
- onFinish && onFinish(datasource);
-
- }
- const getTableData = async () => {
- const resp = await getHasSetParamsList(record.id);
- if(resp){
- set_datasource(resp);
- }else{
- return Promise.resolve([]);
- }
- }
- useEffect(() => {
- getTableData()
- }, [])
- return (
- <div >
- <EditableProTable columns={columns}
- className='EditableProTable'
- options={false}
- rowKey={rowKey}
- scroll={{ y: 400 }}
- tableAlertRender={false}
- recordCreatorProps={
- {
- record: () => ({ id: (Math.random() * 1000000).toFixed(0) }),
- }
- }
- editable={{
- onSave: async (rowKey, data, row) => {
- // console.log({rowKey, data, row,currentSelectedRow,datasource});
-
- const {index} = data;
-
- if(index > datasource.length - 1){
- //新增
- const {id,label} = currentSelectedRow;
- set_datasource([...datasource,{
- shareParamName:label,
- shareParamCode:data.shareParamCode,
- shareParamPopout:data.shareParamPopout,
- id:id
- }]);
- }else {
- //编辑
- const newData = [...datasource];
- newData[index] = {
- shareParamName:currentSelectedRow?currentSelectedRow.label:data.shareParamName,
- shareParamCode:data.shareParamCode,
- shareParamPopout:data.shareParamPopout,
- id:currentSelectedRow?currentSelectedRow.id:data.id
- };
- set_datasource([...newData]);
- }
-
- currentSelectedRow = undefined;
- },
- }}
- value={datasource}
-
- />
- <div className='footer'>
- <span className='cancel' onClick={() => close()}>取消</span>
- <span className='ok' onClick={() => saveHandle()}>{`确认`}</span>
- </div>
- </div>
- )
- });
- const close = () => {
- onVisibleChange && onVisibleChange(false);
- }
- return (
- <ModalForm className="TableSelecter" title={title} width={550} submitter={{
- render: false
- }} open={open} modalProps={{
- closable: false,
- }}>
- <Table
- // ref={tableSelecterRef}
- record={undefined}
- ></Table>
- </ModalForm>
- )
- }
- export default EditTableModal
|