123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- import React, { useEffect, useRef, useState, } from 'react';
- import type { EditableFormInstance, ProColumns, } from '@ant-design/pro-components';
- import {
- baseFun,
- SDAreaTtile,
- SDButton,
- SDEditableTable,
- SDLayout,
- SDPage,
- } from '@sundata/ui-frame';
- import type { SysSqlEditDefOperateModel } from './../../../services/pubMng/defOperate';
- import { vailOperName } from './../../../services/pubMng/defOperate';
- import { saveOperateDefineList } from './../../../services/pubMng/defOperate';
- import { getDataList } from './../../../services/pubMng/defOperate';
- import { useModel } from '@umijs/max';
- const DefOperate: React.FC = () => {
- /** 字段数据 */
- const [fieldDataSource, setFieldDataSource] = useState<readonly SysSqlEditDefOperateModel[]>();
- // 可编辑表格的引用
- const tableRef = useRef<EditableFormInstance>();
- const { fetchDict } = useModel('dict');
-
- /**关系维护 */
- const getListFun = async () => {
- const resu = await getDataList();
- setFieldDataSource(resu);
- }
- useEffect(() => {
- getListFun();
- }, []);
- const saveinfo = async () => {
- // 检查表格编辑状态
- const editingRows = tableRef.current?.getRowsData?.();
- if (editingRows && editingRows.length > 0) {
- baseFun.warning('参数列表中有正在编辑的参数,请确认或取消修改后再保存');
- return;
- }
- if (!fieldDataSource) {
- return;
- }
- for (let i = 0; i < fieldDataSource.length; i++) {
- if (fieldDataSource[i].operusemode == 'attribute' && fieldDataSource[i].datatype == "") {
- baseFun.warning("操作符" + fieldDataSource[i].opercode + "使用方式为属性时数据类型不能为空!");
- return;
- }
- for (let j = 0; j < fieldDataSource.length; j++) {
- if (fieldDataSource[i].opercode == fieldDataSource[j].opercode && i != j) {
- baseFun.warning("操作符" + fieldDataSource[i].opercode + "不唯一");
- return;
- }
- if (fieldDataSource[i].opername == fieldDataSource[j].opername && i != j) {
- baseFun.warning("操作符名称 " + fieldDataSource[i].opername + " 不唯一");
- return;
- }
- }
- }
- //保存
- await saveOperateDefineList([...(fieldDataSource || [])]);
- baseFun.info('处理完成');
- }
- const filedColumns: ProColumns<SysSqlEditDefOperateModel>[] = [
- {
- title: '使用方式',
- dataIndex: 'operusemode',
- valueType: 'select',
- search: false,
- request: () => fetchDict({ dictKey: 'operusemode' }),
- formItemProps: () => {
- return {
- rules: [{ required: true }],
- };
- },
- },
- {
- title: '操作符',
- dataIndex: 'opercode',
- search: false,
- valueType: 'text',
- //render:
- formItemProps: () => {
- return {
- rules: [
- { required: true },
- ],
- };
- },
- },
- {
- title: '操作参数',
- dataIndex: 'operpara',
- search: false,
- formItemProps: () => {
- return {
- rules: [{ max: 20, message: '最多20个字符' }],
- };
- },
- },
- {
- title: '操作名称',
- dataIndex: 'opername',
- search: false,
- formItemProps: () => {
- return {
- rules: [
- { max: 60, message: '最多60个字符' },
- { required: true },
- {
- validator: async (rule, value,) => {
- if (value) {
- if (value.indexOf(" ") != -1) {
- return Promise.reject(new Error("操作名称[" + value + "]不能含有空格!"));
- }
- if (value.indexOf(".") != -1) {
- return Promise.reject(new Error("操作名称[" + value + "]不能含有点号!"));
- }
- }
- const rs = await vailOperName(value);
- if (!rs) {
- return Promise.reject(new Error("操作名称与编辑器变量名重复"));
- }
- return Promise.resolve();
- }
- },
- ],
- };
- },
- },
- {
- title: '数据类型',
- dataIndex: 'datatype',
- search: false,
- valueType: 'select',
- request: () => fetchDict({ dictKey: 'datatype' }),
- },
- {
- title: '操作说明',
- dataIndex: 'opercomment',
- search: false,
- ellipsis: true,
- valueType: 'textarea',
- formItemProps: () => {
- return {
- rules: [{ max: 200, message: '最多200个字符' }],
- };
- },
- },
- ];
- return (
- <SDPage
- footer={[<SDButton autoLoading={true} successMessage='' primary key='save' onClick={saveinfo} >保存</SDButton>]}
- >
- <SDAreaTtile title="数据操作定义"/>
- <SDLayout>
- <SDEditableTable
- columns={filedColumns}
- value={fieldDataSource || []}
- //insertDelete={false}
- editable={true}
- dragable={true}
- onChange={(value: any)=>{setFieldDataSource(value)}}
- formRef={tableRef}
- //bodyMaxHeight='calc(100vh - 350px)'
- />
- </SDLayout>
- </SDPage>
- );
- };
- export default DefOperate;
|