Commit f11d79c9 authored by 皮倩雯's avatar 皮倩雯

fix: '优化工单移交交互,关联表单控制规则接入组件,修复web搭建界面滚动条样式bug'

parent be1adf3e
Pipeline #63026 passed with stages
......@@ -12,7 +12,7 @@ import styles from './index.less';
import Tree from '@/components/ExpendableTree';
const { TextArea } = Input;
const RuleConfig = props => {
const { visible, handleCancel, fieldList, onSubumit, RuleContent } = props;
const { visible, handleCancel, fieldList, onSubumit, RuleContent, flag } = props;
const [rule, setRule] = useState([]);
const [expandedKey, setExpandedKey] = useState(''); // 默认展开项
const [currentSelectId, setCurrentSelectId] = useState(''); // 选中得节点
......@@ -34,16 +34,14 @@ const RuleConfig = props => {
onSubumit(rule);
};
// 处理树数据
const mapTree = (val, index) => {
return {
const mapTree = (val, index) => ({
title: val.TableName,
key: val.TableName,
children: val.TableFieldNames.map(item => ({
title: item,
key: `${val.TableName}.${item}`,
})),
};
};
});
const onSelect = (prop, treeNode) => {
console.log(prop, treeNode);
if (!treeNode.node.children) {
......@@ -76,7 +74,7 @@ const RuleConfig = props => {
/>
</div>
<div className={styles.rightContent}>
<div className={styles.title}>符合以下条件时工单扭转到对应的节点</div>
{flag == 1 && <div className={styles.title}>符合以下条件时工单扭转到对应的节点</div>}
<div className={styles.textAreaBox}>
<TextArea
autoSize={{ minRows: 19, maxRows: 19 }}
......@@ -89,9 +87,16 @@ const RuleConfig = props => {
<div className={styles.tipBox}>
<p>请从左侧面板选择字段或选项</p>
<p>{'支持英文模式下运算符(+、-、*、/、>、<、==、!=、<=、>=)及函数'}</p>
{flag == 1 ? (
<>
{' '}
<p>参考场景:</p>
<p>当报销金额大于10000时,才能进入所选节点,则可将流转条件设置为:</p>
<p>{'报销金额>10000'}</p>
</>
) : (
<p>{`示例:{表名.是否缴费} = ‘是’ and {表名.缴费金额} > 1000`}</p>
)}
</div>
</div>
</div>
......
......@@ -54,6 +54,7 @@ import {
import styles from './index.less';
import VerifyModal from './VerifyModal';
import Tree from '@/components/ExpendableTree';
import RuleConfig from '@/components/RuleConfig';
import Things from '../../../../../assets/images/icons/时间.svg';
const AddModal = props => {
const {
......@@ -66,6 +67,7 @@ const AddModal = props => {
treeData,
keepTreeFirst,
keepStandingBook,
keepTreeData,
} = props;
const [loading, setLoading] = useState(false);
const [fieldName, setFieldName] = useState([]); // 弹窗
......@@ -190,6 +192,8 @@ const AddModal = props => {
const [preViewVideo, setPreViewVideo] = useState(true);
const [visibleChecked, setVisibleChecked] = useState(true);
const [formAdd] = Form.useForm();
const [showRule, setShowRule] = useState(false);
const [fieldList, setFieldList] = useState([]);
const change = e => {
console.log(e);
......@@ -218,6 +222,7 @@ const AddModal = props => {
console.log(pramData);
formAdd.validateFields().then(validate1 => {
if (validate1) {
console.log(1123123);
form.validateFields().then(validate => {
if (validate) {
setLoading(true);
......@@ -337,8 +342,8 @@ const AddModal = props => {
let aalist = {};
let arrlist = {};
aalist.台账名称 = obj.standingBook;
arrlist.key = obj.workOrder;
arrlist.value = obj.eventOrder;
arrlist.fromField = obj.workOrder;
arrlist.toField = obj.eventOrder;
aalist.默认显示 = visibleChecked || false;
aalist.控制规则 = obj.configName;
console.log(formAdd.getFieldValue('parmars'))
......@@ -459,12 +464,14 @@ const AddModal = props => {
useEffect(() => {
if (isVisible) {
setFieldList(keepTreeData);
// 用于判断分组名与字段名重复时提示当前未选中字段
if (keepTreeFirst.indexOf(itemData.name) != -1 && itemData.children) {
setShow('none');
} else {
setShow('block');
}
console.log(treeData);
setTreeValue(treeData);
setValueData([]);
setExpendKey(itemData.ID);
......@@ -773,8 +780,8 @@ const AddModal = props => {
let data11 = JSON.parse(res[0].data.root.Config);
form.setFieldsValue({
standingBook: data11.台账名称,
workOrder: data11.映射字段[data11.映射字段.length-1].key,
eventOrder: data11.映射字段[data11.映射字段.length-1].value,
workOrder: data11.映射字段[data11.映射字段.length-1].fromField,
eventOrder: data11.映射字段[data11.映射字段.length-1].toField,
configName: data11.控制规则,
});
let gg = [...data11.映射字段];
......@@ -1693,8 +1700,8 @@ const AddModal = props => {
let data11 = JSON.parse(aa.Config);
form.setFieldsValue({
standingBook: data11.台账名称,
workOrder: data11.映射字段[data11.映射字段.length-1].key,
eventOrder: data11.映射字段[data11.映射字段.length-1].value,
workOrder: data11.映射字段[data11.映射字段.length-1].fromField,
eventOrder: data11.映射字段[data11.映射字段.length-1].toField,
configName: data11.控制规则,
});
let gg = [...data11.映射字段];
......@@ -2121,8 +2128,8 @@ const AddModal = props => {
let data11 = JSON.parse(res[0].data.root.Config);
form.setFieldsValue({
standingBook: data11.台账名称,
workOrder: data11.映射字段[data11.映射字段.length-1].key,
eventOrder: data11.映射字段[data11.映射字段.length-1].value,
workOrder: data11.映射字段[data11.映射字段.length-1].fromField,
eventOrder: data11.映射字段[data11.映射字段.length-1].toField,
configName: data11.控制规则,
});
let gg = [...data11.映射字段];
......@@ -2461,8 +2468,8 @@ const AddModal = props => {
let aalist = {};
let arrlist = {};
aalist.台账名称 = obj.standingBook;
arrlist.key = obj.workOrder;
arrlist.value = obj.eventOrder;
arrlist.fromField = obj.workOrder;
arrlist.toField = obj.eventOrder;
aalist.默认显示 = visibleChecked || false;
aalist.控制规则 = obj.configName;
let lii = [];
......@@ -2475,7 +2482,7 @@ const AddModal = props => {
lii.length>0 &&lii.map(i=>{
if(i){
if(i.key&&i.value){
if(i.fromField&&i.toField){
lia.push(i)
}
}
......@@ -2848,6 +2855,16 @@ const AddModal = props => {
setCse(e.target.checked);
};
const editRule = () =>{
setShowRule(true);
}
const saveRule = e =>{
form.setFieldsValue({configName:e})
setShowRule(false);
console.log(e);
}
return (
<>
<Drawer
......@@ -2856,6 +2873,7 @@ const AddModal = props => {
// {...props}
visible={isVisible}
onClose={onCancel}
zIndex={10}
destroyOnClose
afterClose={() => {
form.resetFields();
......@@ -3320,7 +3338,7 @@ const AddModal = props => {
>
<Input placeholder="示例:工单编号:工单编号,事件编号:事件编号" />
</Item> */}
<Item label={<><span style={{color:'red', fontSize:'17px',marginRight:'5px', marginTop:'3px'}}>*</span><span>映射字段</span></>} labelCol={{ span: 4 }}>
<Item style={{marginBottom:'10px'}} label={<><span style={{color:'red', fontSize:'17px',marginRight:'5px', marginTop:'3px'}}>*</span><span>映射字段</span></>} labelCol={{ span: 4 }}>
<Row>
<Col span={11}>
<Item
......@@ -3328,17 +3346,17 @@ const AddModal = props => {
rules={[{ required: true, message: '请输入字段名' }]}
style={{ marginBottom:0}}
>
<Input placeholder="请输入字段名" />
<Input placeholder="请输入字段名" style={{width:'210px'}}/>
</Item>
</Col>
<Col span={2} style={{paddingTop:'3px'}}><SwapOutlined style={{marginLeft:'14px'}}/></Col>
<Col span={1} style={{paddingTop:'3px'}}><SwapOutlined style={{marginLeft:'-4px'}}/></Col>
<Col span={11}>
<Item
name="eventOrder"
rules={[{ required: true, message: '请输入映射字段名' }]}
style={{ marginBottom:0}}
>
<Input placeholder="请输入映射字段名" style={{ width:'189px'}}/>
<Input placeholder="请输入映射字段名" style={{ width:'210px'}}/>
</Item>
</Col>
</Row>
......@@ -3360,7 +3378,7 @@ const AddModal = props => {
<Form.Item
{...restField}
style={{ marginBottom: '5px' }}
name={[name, 'key']}
name={[name, 'fromField']}
fieldKey={[fieldKey, 'key']}
validateTrigger={['onChange', 'onBlur']}
rules={[
......@@ -3371,7 +3389,7 @@ const AddModal = props => {
let data =[];
aa.length >0 && aa.map(i=>{
if(i){
data.push(i.key)
data.push(i.fromField)
}
})
let list = new Set(data);
......@@ -3384,17 +3402,17 @@ const AddModal = props => {
},
]}
>
<Input placeholder="请填写字段名" style={{ width:'227px', marginLeft:'98px'}}/>
<Input placeholder="请填写字段名" style={{ width:'210px', marginLeft:'98px'}}/>
</Form.Item>
<SwapOutlined style={{marginLeft:'6px'}}/>
<SwapOutlined style={{marginLeft:'4px'}}/>
<Form.Item
{...restField}
style={{ marginBottom: '5px' }}
name={[name, 'value']}
fieldKey={[fieldKey, 'value']}
name={[name, 'toField']}
fieldKey={[fieldKey, 'key']}
rules={[{ required: true, message: '请填写映射字段名'}]}
>
<Input placeholder="请填写映射字段名" style={{ width:'188px', marginLeft:'6px'}}/>
<Input placeholder="请填写映射字段名" style={{ width:'210px', marginLeft:'4px'}}/>
</Form.Item>
<MinusCircleOutlined
onClick={() => remove(name)}
......@@ -3432,7 +3450,8 @@ const AddModal = props => {
labelCol={{ span: 4 }}
rules={[{ required: true, message: '请输入控制规则' }]}
>
<TextArea placeholder="示例:{表名.是否缴费} = ‘是’ and {表名.缴费金额} > 1000" />
{/* <TextArea placeholder="示例:{表名.是否缴费} = ‘是’ and {表名.缴费金额} > 1000" /> */}
<div style={{border:'2px solid #6A98FA',lineHeight:'34px', textAlign:'center'}} onClick={editRule}><span>{form.getFieldsValue().configName}</span></div>
</Item>
</>
);
......@@ -3869,6 +3888,14 @@ const AddModal = props => {
)}
</div>
</Drawer>
<RuleConfig
RuleContent={form.getFieldsValue().configName}
fieldList={fieldList}
visible={showRule}
handleCancel={() => setShowRule(false)}
onSubumit={e => saveRule(e)}
flag={2}
/>
</>
);
};
......
......@@ -63,6 +63,7 @@ const AddModal = props => {
const [checkStrictly, setCheckStrictly] = useState(false);
const [selectGroup, setSelectGroup] = useState([]);
const [keepStandingBook, setKeepStandingBook] = useState([]);
const [keepTreeData, setKeepTreeData] = useState([]);
const editor = record => {
console.log(record);
......@@ -328,6 +329,16 @@ const AddModal = props => {
}).then(res => {
setTreeLoading(false);
if (res.msg === 'Ok') {
let arrlist = [];
let data = {};
let listArr = [];
res.data.root.map(i => {
arrlist.push(i.name);
});
data.TableFieldNames = arrlist;
data.TableName = treeSelectValue.substring(0, treeSelectValue.lastIndexOf('@'));
listArr.push(data);
setKeepTreeData(listArr);
let arr = formateArrDataA(res.data.root, 'group');
let newArr = [];
Object.keys(arr).map((item, index) => {
......@@ -357,6 +368,16 @@ const AddModal = props => {
}).then(res => {
setTreeLoading(false);
if (res.msg === 'Ok') {
let arrlist = [];
let data = {};
let listArr = [];
res.data.root.map(i => {
arrlist.push(i.name);
});
data.TableFieldNames = arrlist;
data.TableName = props.location.state.id;
listArr.push(data);
setKeepTreeData(listArr);
let arr = formateArrDataA(res.data.root, 'group');
let newArr = [];
Object.keys(arr).map((item, index) => {
......@@ -563,6 +584,17 @@ const AddModal = props => {
}).then(res => {
setTreeLoading(false);
if (res.msg === 'Ok') {
let arrlist = [];
let data = {};
let listArr = [];
res.data.root.map(i => {
arrlist.push(i.name);
});
data.TableFieldNames = arrlist;
data.TableName = e.substring(0, e.lastIndexOf('@'));
listArr.push(data);
setKeepTreeData(listArr);
console.log(res.data.root);
let arr = formateArrDataA(res.data.root, 'group');
let newArr = [];
Object.keys(arr).map((item, index) => {
......@@ -606,7 +638,7 @@ const AddModal = props => {
onChange: (selectedRowKeys, selectedRows) => {
let aa = [];
selectedRowKeys.map(i => {
if (typeof i != 'number') {
if (typeof i !== 'number') {
aa.push(i);
}
});
......@@ -729,6 +761,7 @@ const AddModal = props => {
</Modal>
<FieldEditor
isVisible={isVisible}
keepTreeData={keepTreeData}
isType={isType}
itemData={itemData}
formObj1={formObj}
......
......@@ -222,7 +222,7 @@ const FlowNode = () => {
// ),
// },
{
title: '平级移交',
title: '转办',
dataIndex: 'tranferable',
align: 'center',
width: 80,
......@@ -379,7 +379,7 @@ const FlowNode = () => {
// width: 80,
// },
{
title: '平级移交',
title: '转办',
align: 'center',
width: 80,
},
......
......@@ -20,6 +20,7 @@ import {
Drawer,
Space,
Tooltip,
Switch,
} from 'antd';
import { PlusOutlined, InfoCircleOutlined } from '@ant-design/icons';
import Fieldselection from './nodeEditComponents/Fieldselection';
......@@ -37,6 +38,9 @@ const NodeEdit = props => {
const [isDisable, setIsDisable] = useState(); // 允许回退是否可选择
const [filedData, setFiledData] = useState([]); // 已选字段列表
const [filedList, setFiledList] = useState([]); // 当前选择表的所有字段
const [visibleChecked, setVisibleChecked] = useState(true);
const [visibleChecked1, setVisibleChecked1] = useState(true);
const [visibleChecked2, setVisibleChecked2] = useState(true);
const [form] = Form.useForm();
useEffect(() => {
......@@ -67,6 +71,13 @@ const NodeEdit = props => {
setIsDisable(true);
}
changTable(obj.TableName);
console.log(obj);
obj.Transferable = obj.Transferable == 1;
obj.EventsInformation = obj.EventsInformation == 1;
obj.IsSendMessage = obj.IsSendMessage == 1;
setVisibleChecked(obj.Transferable == 1);
setVisibleChecked1(obj.EventsInformation == 1);
setVisibleChecked2(obj.IsSendMessage == 1);
form.setFieldsValue(obj);
}
});
......@@ -193,6 +204,11 @@ const NodeEdit = props => {
const onFinish = () => {
form.validateFields().then(validate => {
if (validate) {
console.log(validate);
validate.Transferable = validate.Transferable ? 1 : 0;
validate.EventsInformation = validate.EventsInformation ? 1 : 0;
validate.IsSendMessage = validate.IsSendMessage ? 1 : 0;
console.log(validate);
editFlowNodeExtend({ ...validate, flowNodeId: msg.ID })
.then(res => {
if (res.code === 0) {
......@@ -279,6 +295,18 @@ const NodeEdit = props => {
}
return externalLength;
};
const change = e => {
console.log(e);
setVisibleChecked(e);
};
const change1 = e => {
console.log(e);
setVisibleChecked1(e);
};
const change2 = e => {
console.log(e);
setVisibleChecked2(e);
};
return (
<Drawer
title="流程节点配置"
......@@ -355,16 +383,20 @@ const NodeEdit = props => {
</Select>
</Form.Item>
<Form.Item label="移交方式" name="Handover">
<Select>
<Option value="移交选择人">移交选择人</Option>
<Radio.Group>
<Radio value="移交选择人">移交选择人</Radio>
<Radio value="自处理">自处理</Radio>
<Radio value="移交默认人">移交默认人</Radio>
<Radio value="移交发起人">移交发起人</Radio>
{/* <Option value="移交选择人">移交选择人</Option>
<Option value="自处理">自处理</Option>
<Option value="自处理或者移交选择人">自处理或者移交选择人</Option>
<Option value="移交默认人">移交默认人</Option>
<Option value="移交发起人">移交发起人</Option>
<Option value="跨站移交">跨站移交</Option>
<Option value="处理站点移交">处理站点移交</Option>
<Option value="本人站点移交">本人站点移交</Option>
<Option value="移交上报人">移交上报人</Option>
</Select>
<Option value="本人站点移交">本人站点移交</Option> */}
</Radio.Group>
</Form.Item>
{/* <Form.Item label="检查前面在办" name="aheadHandle">
<Select>
......@@ -379,23 +411,41 @@ const NodeEdit = props => {
<Option value={2}>一人接收,一人办理</Option>
</Select>
</Form.Item> */}
<Form.Item label="平级移交" name="Transferable">
<Radio.Group>
<Form.Item label="转办" name="Transferable">
<Switch
checkedChildren="是"
unCheckedChildren="否"
checked={visibleChecked}
onChange={change}
/>
{/* <Radio.Group>
<Radio value="0">否</Radio>
<Radio value="1">是</Radio>
</Radio.Group>
</Radio.Group> */}
</Form.Item>
<Form.Item label="显示事件信息" name="EventsInformation">
<Radio.Group>
<Switch
checkedChildren="是"
unCheckedChildren="否"
checked={visibleChecked1}
onChange={change1}
/>
{/* <Radio.Group>
<Radio value="0">否</Radio>
<Radio value="1">是</Radio>
</Radio.Group>
</Radio.Group> */}
</Form.Item>
<Form.Item label="是否发送短信" name="IsSendMessage">
<Radio.Group>
<Switch
checkedChildren="是"
unCheckedChildren="否"
checked={visibleChecked2}
onChange={change2}
/>
{/* <Radio.Group>
<Radio value={0}>否</Radio>
<Radio value={1}>是</Radio>
</Radio.Group>
</Radio.Group> */}
</Form.Item>
<Form.Item
......
......@@ -684,6 +684,7 @@ const NodeModal = props => {
visible={showRule}
handleCancel={() => setShowRule(false)}
onSubumit={e => saveRule(e)}
flag={1}
/>
</>
);
......
......@@ -414,12 +414,24 @@ const WebConfigPage = props => {
<PageContainer>
<div className={styles.webConfigContainer}>
<Spin spinning={loading || submitting}>
<div style={{ display: 'flex', alignContent: 'center', justifyContent: 'flex-start' }}>
<div
style={{
display: 'flex',
alignContent: 'center',
justifyContent: 'flex-start',
}}
>
<Tabs
type="editable-card"
onEdit={onEdit}
onChange={handleTabChange}
activeKey={curWeb.id}
style={{
display: 'flex',
alignContent: 'center',
justifyContent: 'flex-start',
width: '97% ',
}}
>
{/* <TabPane key={99} tab="产品配置" closable={false}>
<ProductConfig />
......
......@@ -74,7 +74,7 @@ const SortModal = props => {
cancelText="取消"
>
<div className={styles.cardContent} style={{ width: '90%', marginLeft: '24px' }}>
<div style={{ minHeight: '200px' }}>
<div style={{ height: '500px' }}>
<DragTable
bordered
style={{ marginBottom: '10px' }}
......@@ -87,7 +87,7 @@ const SortModal = props => {
dragCallBack={dragCallBack}
ItemTypes="flowOrder"
scroll={{
y: 500,
y: 450,
}}
/>
</div>
......
.cardContent {
height: 30rem;
overflow-y: scroll;
overflow-x: scroll;
width: 100%;
.ant-checkbox-group {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment