Commit 040b17ff authored by 皮倩雯's avatar 皮倩雯

fix: '修改视频平台界面样式'

parent 6ed0615d
Pipeline #46599 skipped with stages
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Description: * @Description:
* @Author: leizhe * @Author: leizhe
* @Date: 2022-03-04 18:33:24 * @Date: 2022-03-04 18:33:24
* @LastEditTime: 2022-03-22 10:11:21 * @LastEditTime: 2022-03-24 17:41:25
* @LastEditors: leizhe * @LastEditors: leizhe
*/ */
import { Tree } from 'antd'; import { Tree } from 'antd';
...@@ -23,10 +23,6 @@ export default props => { ...@@ -23,10 +23,6 @@ export default props => {
}, [expandedKeys]); }, [expandedKeys]);
const handleExpand = (keys, { expanded, node }) => { const handleExpand = (keys, { expanded, node }) => {
console.log(keys);
console.log(expanded);
console.log(node);
console.log(keepTree);
if (keepTree && keepTree.indexOf(node.key) != -1 && epKeys.indexOf(node.key) == -1) { if (keepTree && keepTree.indexOf(node.key) != -1 && epKeys.indexOf(node.key) == -1) {
setEpKeys([node.key]); setEpKeys([node.key]);
} else { } else {
...@@ -39,10 +35,6 @@ export default props => { ...@@ -39,10 +35,6 @@ export default props => {
}; };
const handleSelect = (keys, e) => { const handleSelect = (keys, e) => {
console.log(keys);
console.log(e);
console.log(epKeys);
console.log(keepTree);
if (keepTree && keepTree.indexOf(keys[0]) != -1 && epKeys.indexOf(keys[0]) == -1) { if (keepTree && keepTree.indexOf(keys[0]) != -1 && epKeys.indexOf(keys[0]) == -1) {
setEpKeys(keys); setEpKeys(keys);
} else { } else {
......
...@@ -58,7 +58,7 @@ const ProxyConfig = () => { ...@@ -58,7 +58,7 @@ const ProxyConfig = () => {
if (res.code === 0) { if (res.code === 0) {
message.success('保存成功'); message.success('保存成功');
} else { } else {
message.error('保存失败'); message.error(res.msg);
} }
}); });
}; };
...@@ -78,20 +78,10 @@ const ProxyConfig = () => { ...@@ -78,20 +78,10 @@ const ProxyConfig = () => {
StartNginx().then(res => { StartNginx().then(res => {
setLoading(false); setLoading(false);
if (res.code === 0) { if (res.code === 0) {
// message.success('开启成功'); message.success('开启成功');
notification.success({
message: '提示',
duration: 15,
description: '开启成功',
});
setFlag(flag + 1); setFlag(flag + 1);
} else { } else {
// message.error('开启失败'); message.error(res.msg);
notification.error({
message: '提示',
duration: 15,
description: res.msg,
});
} }
}); });
}; };
...@@ -101,18 +91,10 @@ const ProxyConfig = () => { ...@@ -101,18 +91,10 @@ const ProxyConfig = () => {
StopNginx().then(res => { StopNginx().then(res => {
setLoading(false); setLoading(false);
if (res.code === 0) { if (res.code === 0) {
notification.success({ message.success('关闭成功');
message: '提示',
duration: 15,
description: '关闭成功',
});
setFlag(flag + 1); setFlag(flag + 1);
} else { } else {
notification.error({ message.error(res.msg);
message: '提示',
duration: 15,
description: res.msg,
});
} }
}); });
}; };
......
...@@ -99,7 +99,7 @@ const ProjectManage = props => { ...@@ -99,7 +99,7 @@ const ProjectManage = props => {
dataIndex: 'type', dataIndex: 'type',
align: 'center', align: 'center',
key: 'type', key: 'type',
render: (text, record) => <div>{text === null ? '-' : text}</div>, render: (text, record) => <div>{text === null || !text ? '-' : text}</div>,
}, },
{ {
title: '推送方式', title: '推送方式',
...@@ -117,7 +117,7 @@ const ProjectManage = props => { ...@@ -117,7 +117,7 @@ const ProjectManage = props => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -144,7 +144,7 @@ const ProjectManage = props => { ...@@ -144,7 +144,7 @@ const ProjectManage = props => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
......
...@@ -135,14 +135,14 @@ const TemplateManage = () => { ...@@ -135,14 +135,14 @@ const TemplateManage = () => {
dataIndex: 'type', dataIndex: 'type',
key: 'type', key: 'type',
align: 'center', align: 'center',
render: text => <span>{text == null ? '-' : text}</span>, render: text => <span>{text == null || !text ? '-' : text}</span>,
}, },
{ {
title: '第三方模板名称', title: '第三方模板名称',
dataIndex: 'third_name', dataIndex: 'third_name',
key: 'third_name', key: 'third_name',
align: 'center', align: 'center',
render: text => <span>{text == null ? '-' : text}</span>, render: text => <span>{text == null || !text ? '-' : text}</span>,
}, },
{ {
title: '企业微信ID', title: '企业微信ID',
...@@ -160,7 +160,7 @@ const TemplateManage = () => { ...@@ -160,7 +160,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -187,7 +187,7 @@ const TemplateManage = () => { ...@@ -187,7 +187,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -213,7 +213,7 @@ const TemplateManage = () => { ...@@ -213,7 +213,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -239,7 +239,7 @@ const TemplateManage = () => { ...@@ -239,7 +239,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -265,7 +265,7 @@ const TemplateManage = () => { ...@@ -265,7 +265,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
...@@ -292,7 +292,7 @@ const TemplateManage = () => { ...@@ -292,7 +292,7 @@ const TemplateManage = () => {
}), }),
render: (text, record) => ( render: (text, record) => (
<span> <span>
{text === null ? ( {text === null || !text ? (
'-' '-'
) : ( ) : (
<Tooltip placement="topLeft" title={text}> <Tooltip placement="topLeft" title={text}>
......
...@@ -60,10 +60,21 @@ const AddModal = props => { ...@@ -60,10 +60,21 @@ const AddModal = props => {
return ( return (
<SiteModal <SiteModal
{...props} {...props}
title="模板添加" title={
<span>
<span style={{ marginRight: '20px' }}>
<span>模板添加</span>
</span>
<span style={{ fontSize: '14px' }}>当前解析版本规则</span>
<span style={{ color: 'rgb(24, 144, 255)' }}>{messageVersion}</span>
</span>
}
style={{ top: 200, borderRadius: '20px' }} style={{ top: 200, borderRadius: '20px' }}
width="820px" width="820px"
destroyOnClose destroyOnClose
afterClose={() => {
form.resetFields();
}}
cancelText="取消" cancelText="取消"
okText="确认" okText="确认"
onOk={() => onSubmit()} onOk={() => onSubmit()}
...@@ -116,7 +127,7 @@ const AddModal = props => { ...@@ -116,7 +127,7 @@ const AddModal = props => {
<Row> <Row>
<Col span={12}> <Col span={12}>
<Item <Item
label="请选择第三方模板名称" label="第三方模板名称"
name="third_name" name="third_name"
wrapperCol={{ span: 12 }} wrapperCol={{ span: 12 }}
labelCol={{ span: 12 }} labelCol={{ span: 12 }}
...@@ -166,7 +177,7 @@ const AddModal = props => { ...@@ -166,7 +177,7 @@ const AddModal = props => {
<Row> <Row>
<Col span={12}> <Col span={12}>
<Item <Item
label="请选择第三方模板名称" label="第三方模板名称"
wrapperCol={{ span: 12 }} wrapperCol={{ span: 12 }}
labelCol={{ span: 12 }} labelCol={{ span: 12 }}
name="third_name" name="third_name"
...@@ -222,16 +233,7 @@ const AddModal = props => { ...@@ -222,16 +233,7 @@ const AddModal = props => {
placeholder="first: 标题信息|Second: 展示内容|Third: 时间|Four: 备注信息" placeholder="first: 标题信息|Second: 展示内容|Third: 时间|Four: 备注信息"
/> />
</Item> </Item>
<Item <Item label="解析规则版本(仅针对1.0规则)" name="analysis_params" labelCol={{ span: 6 }}>
label={
<>
<span>当前解析规则版本</span>
<span>{messageVersion}</span>
</>
}
name="analysis_params"
labelCol={{ span: 6 }}
>
<TextArea rows={2} style={{ width: '95%' }} placeholder="param1|param2|param3|param4" /> <TextArea rows={2} style={{ width: '95%' }} placeholder="param1|param2|param3|param4" />
</Item> </Item>
</Form> </Form>
......
...@@ -39,7 +39,7 @@ const EditModal = props => { ...@@ -39,7 +39,7 @@ const EditModal = props => {
if (option) { if (option) {
setTemplateName(option.filter(item => item.Type === props.template.type)); setTemplateName(option.filter(item => item.Type === props.template.type));
} }
}, [props.template]); }, [props.template, visible]);
const layout = { const layout = {
layout: 'horizontal', layout: 'horizontal',
...@@ -71,11 +71,22 @@ const EditModal = props => { ...@@ -71,11 +71,22 @@ const EditModal = props => {
return ( return (
<SiteModal <SiteModal
{...props} {...props}
title="模板编辑" title={
<span>
<span style={{ marginRight: '20px' }}>
<span>模板编辑</span>
</span>
<span style={{ fontSize: '14px' }}>当前解析版本规则</span>
<span style={{ color: 'rgb(24, 144, 255)' }}>{messageVersion}</span>
</span>
}
bodyStyle={{ width: '100%', minHeight: '100px' }} bodyStyle={{ width: '100%', minHeight: '100px' }}
style={{ top: 200, borderRadius: '20px' }} style={{ top: 200, borderRadius: '20px' }}
width="820px" width="820px"
destroyOnClose destroyOnClose
afterClose={() => {
form.resetFields();
}}
cancelText="取消" cancelText="取消"
okText="确认" okText="确认"
onOk={() => onSubmit()} onOk={() => onSubmit()}
...@@ -239,12 +250,7 @@ const EditModal = props => { ...@@ -239,12 +250,7 @@ const EditModal = props => {
/> />
</Item> </Item>
<Item <Item
label={ label="当前解析规则版本(仅针对1.0规则)"
<>
<span>当前解析规则版本</span>
<span>{messageVersion}</span>
</>
}
labelCol={{ span: 6 }} labelCol={{ span: 6 }}
name="analysis_params" name="analysis_params"
> >
......
...@@ -3,623 +3,671 @@ import { Form, Modal, Row, Col, Input, Select, notification } from 'antd'; ...@@ -3,623 +3,671 @@ import { Form, Modal, Row, Col, Input, Select, notification } from 'antd';
import { addInsertVideoConfig, editInsertVideoConfig } from '@/services/videoManger/videoManger'; import { addInsertVideoConfig, editInsertVideoConfig } from '@/services/videoManger/videoManger';
const AddModal = props => { const AddModal = props => {
const { callBackSubmit = () => { }, visible, onCancel, type, type1, kind, obj } = props; const { callBackSubmit = () => {}, visible, onCancel, type, type1, kind, obj } = props;
const [form] = Form.useForm(); const [form] = Form.useForm();
const { Item } = Form; const { Item } = Form;
const { TextArea } = Input; const { TextArea } = Input;
const [selectChange, setSelectChange] = useState('轻应用') const [selectChange, setSelectChange] = useState('轻应用');
const [selectChange1, setSelectChange1] = useState('否') const [selectChange1, setSelectChange1] = useState('否');
const [selectChange2, setSelectChange2] = useState('主码流') const [selectChange2, setSelectChange2] = useState('主码流');
const onChange = value => { const onChange = value => {
setSelectChange(value) setSelectChange(value);
} };
const onChange1 = value => { const onChange1 = value => {
setSelectChange1(value) setSelectChange1(value);
} };
const onChange2 = value => { const onChange2 = value => {
setSelectChange2(value) setSelectChange2(value);
} };
useEffect(() => { useEffect(() => {
if (kind === 'add') {
form.resetFields();
} else {
form.setFieldsValue({ ...obj });
}
}, [visible]);
const onSubmit = () => {
form.validateFields().then(validate => {
if (validate) {
let getValue = form.getFieldsValue();
console.log(getValue);
if (getValue.PlayModel === undefined) {
getValue.PlayModel = '轻应用';
}
if (getValue.PlayZeroChannel === undefined) {
getValue.PlayZeroChannel = '否';
}
if (getValue.StreamType === undefined) {
getValue.StreamType = '主码流';
}
getValue.VideoManufacturer = type;
if (kind === 'add') { if (kind === 'add') {
form.resetFields(); addInsertVideoConfig(getValue).then(res => {
} else { if (res.msg === 'Ok') {
form.setFieldsValue({ ...obj }) form.resetFields();
callBackSubmit();
notification.success({
message: '提示',
duration: 3,
description: '新增成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
});
} }
}, [visible]) if (kind === 'edit') {
const onSubmit = () => { editInsertVideoConfig({
form.validateFields().then(validate => { ...getValue,
if (validate) { Id: obj.Id,
let getValue = form.getFieldsValue(); }).then(res => {
console.log(getValue) if (res.msg === 'Ok') {
if (getValue.PlayModel === undefined) { form.resetFields();
getValue.PlayModel = '轻应用' callBackSubmit();
} notification.success({
if (getValue.PlayZeroChannel === undefined) { message: '提示',
getValue.PlayZeroChannel = '否' duration: 3,
} description: '编辑成功',
if (getValue.StreamType === undefined) { });
getValue.StreamType = '主码流' } else {
} notification.error({
getValue.VideoManufacturer = type message: '提示',
if (kind === 'add') { duration: 3,
addInsertVideoConfig(getValue).then(res => { description: res.msg,
if (res.msg === 'Ok') { });
form.resetFields();
callBackSubmit();
notification.success({
message: '提示',
duration: 3,
description: '新增成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
})
}
if(kind === 'edit'){
editInsertVideoConfig({
...getValue,
Id:obj.Id
}).then(res => {
if (res.msg === 'Ok') {
form.resetFields();
callBackSubmit();
notification.success({
message: '提示',
duration: 3,
description: '编辑成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
})
}
} }
}); });
}
}
});
};
} if (type1 == 'aa') {
return (
<Modal
visible={visible}
title={
kind === 'add' ? (
<span style={{ fontSize: '18px' }}>新增配置</span>
) : (
<span style={{ fontSize: '18px' }}>编辑配置</span>
)
}
width="1000px"
destroyOnClose
maskClosable={false}
onCancel={onCancel}
onOk={onSubmit}
>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>基本信息</p>
<Form
form={form}
labelCol={{ span: 7 }}
style={{ height: '25rem', overflowY: 'scroll' }}
autocomplete="off"
>
<Row>
<Col span={11}>
<Item
label="名称"
name="Name"
rules={[
{
required: true,
message: '请输入名称',
},
]}
>
<Input placeholder="请输入名称" />
</Item>
</Col>
{(() => {
switch (type) {
case '海康1.2':
return (
<>
<Col span={12}>
<span
style={{
position: 'absolute',
left: '12%',
top: '9%',
color: 'red',
fontSize: '16px',
}}
>
*
</span>
<Item label="视频厂商" name="VideoManufacturer">
<Input placeholder="海康1.2" disabled />
</Item>
</Col>
</>
);
case '海康NVR':
return (
<>
<Col span={12}>
<span
style={{
position: 'absolute',
left: '12%',
top: '9%',
color: 'red',
fontSize: '16px',
}}
>
*
</span>
<Item label="视频厂商" name="VideoManufacturer">
<Input placeholder="海康NVR" disabled />
</Item>
</Col>
</>
);
}
})()}
<Col span={11}>
<Item
label="设备编码"
name="EquipmentCode"
rules={[
{
required: true,
message: '请输入设备编码',
},
]}
>
<Input placeholder="设备台账对应设备编码字段" />
</Item>
</Col>
<Col span={12}>
<Item
label="通道ID"
name="PassageId"
rules={[
{
required: true,
message: '请输入通道ID',
},
]}
>
<TextArea placeholder="视频监控点ID,请用英文逗好分隔" />
</Item>
</Col>
<Col span={24}>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>{type}</p>
</Col>
{(() => {
switch (type) {
case '海康1.2':
return (
<>
<Col span={11}>
<Item
label="设备序列号"
name="EquipmentNumber"
rules={[
{
required: true,
message: '请输入设备序列号',
},
]}
>
<Input placeholder="视频设备序列号" />
</Item>
</Col>
</>
);
case '海康NVR':
return (
<>
<Col span={11}>
<Item
label="视频流地址"
name="HLSPath"
rules={[
{
required: true,
message: '请输入视频流地址',
},
]}
>
<TextArea placeholder="视频流地址" />
</Item>
</Col>
</>
);
}
})()}
<Col span={12}>
<Item label="刻录机名称" name="RecorderName">
<Input placeholder="刻录机名称" />
</Item>
</Col>
<Col span={11}>
<Item
label="视频名称"
name="VideoName"
rules={[
{
required: true,
message: '请输入视频名称',
},
]}
>
<Input placeholder="视频监控点名称" />
</Item>
</Col>
<Col span={12}>
<Item label="默认通道ID" name="DefaultPassageId">
<TextArea placeholder="默认视频监控点ID,请用英文逗好分隔" />
</Item>
</Col>
<Col span={11}>
<Item
label="视频服务地址"
name="VideoPath"
rules={[
{
required: true,
message: '请输入视频名称',
},
]}
>
<Input placeholder="视频服务地址" />
</Item>
</Col>
</Row>
</Form>
</Modal>
);
} else {
return (
<Modal
visible={visible}
title={
kind === 'add' ? (
<span style={{ fontSize: '18px' }}>新增配置</span>
) : (
<span style={{ fontSize: '18px' }}>编辑配置</span>
)
}
width="1000px"
destroyOnClose
maskClosable={false}
onCancel={onCancel}
onOk={onSubmit}
>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>基本信息</p>
<Form
form={form}
labelCol={{ span: 7 }}
style={{ height: '27rem', overflowY: 'scroll' }}
autocomplete="off"
>
<Row>
<Col span={11}>
<Item
label="名称"
name="Name"
rules={[
{
required: true,
message: '请输入名称',
},
]}
>
<Input placeholder="请输入名称" />
</Item>
</Col>
{(() => {
switch (type) {
case '萤石云':
return (
<>
<Col span={12}>
<span
style={{
position: 'absolute',
left: '12%',
top: '9%',
color: 'red',
fontSize: '16px',
}}
>
*
</span>
<Item label="视频厂商" name="VideoManufacturer">
<Input placeholder="萤石云" disabled />
</Item>
</Col>
</>
);
case '海康':
return (
<>
<Col span={12}>
<span
style={{
position: 'absolute',
left: '12%',
top: '9%',
color: 'red',
fontSize: '16px',
}}
>
*
</span>
<Item label="视频厂商" name="VideoManufacturer">
<Input placeholder="海康" disabled />
</Item>
</Col>
</>
);
}
})()}
if (type1 == 'aa') { <Col span={11}>
return ( <Item
<Modal label="登录名"
visible={visible} name="LoginName"
title={ rules={[
kind === 'add' ? <span style={{ fontSize: '18px' }}>新增配置</span> : <span style={{ fontSize: '18px' }}>编辑配置</span> {
} required: true,
width="1000px" message: '请输入登录名',
destroyOnClose },
maskClosable={false} ]}
onCancel={onCancel} >
onOk={onSubmit} <Input placeholder="账户登录名" />
> </Item>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>基本信息</p> </Col>
<Form form={form} labelCol={{ span: 7 }} style={{ height: '25rem', overflowY: 'scroll' }} autocomplete='off'> <Col span={12}>
<Row> <Item
label="登录密码"
name="LoginPwd"
rules={[
{
required: true,
message: '请输入登录密码',
},
]}
>
<Input.Password placeholder="请输入登录密码" />
</Item>
</Col>
<Col span={11}>
<Item
label="设备编码"
name="EquipmentCode"
rules={[
{
required: true,
message: '请输入设备编码',
},
]}
>
<Input placeholder="设备台账对应设备编码字段" />
</Item>
</Col>
<Col span={12}>
<Item
label="通道ID"
name="PassageId"
rules={[
{
required: true,
message: '请输入通道ID',
},
]}
>
<Input placeholder="视频设备通道ID" />
</Item>
</Col>
<Col span={24}>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>{type}</p>
</Col>
{(() => {
switch (type) {
case '萤石云':
return (
<>
<Row>
<Col span={11}> <Col span={11}>
<Item <Item
label="名称" label="视频路径"
name="Name" name="VideoPath"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入名称', message: '请输入视频路径',
}, },
]} ]}
> >
<Input placeholder="请输入名称" /> <TextArea placeholder="视频Rtmp路径,请使用英文逗号分隔" />
</Item> </Item>
</Col>
<Col span={12}>
<Item
label="HLS路径"
name="HLSPath"
rules={[
{
required: true,
message: '请输入HLS路径',
},
]}
>
<TextArea placeholder="视频HLS路径,请使用英文逗号分隔" />
</Item>
</Col> </Col>
{(() => {
switch (type) {
case '海康1.2':
return <>
<Col span={12}>
<span style={{ position: 'absolute', left: '12%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="视频厂商"
name="VideoManufacturer"
>
<Input placeholder="海康1.2" disabled />
</Item>
</Col>
</>
case '海康NVR':
return <>
<Col span={12}>
<span style={{ position: 'absolute', left: '12%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="视频厂商"
name="VideoManufacturer"
>
<Input placeholder="海康NVR" disabled />
</Item>
</Col>
</>
}
})()}
<Col span={11}> <Col span={11}>
<Item <Item
label="设备编码" label="设备序列号"
name="EquipmentCode" name="EquipmentNumber"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入设备编码', message: '请输入设备序列号',
}, },
]} ]}
> >
<Input placeholder="设备台账对应设备编码字段" /> <Input placeholder="视频设备序列号" />
</Item> </Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Item <Item label="刻录机名称" name="RecorderName">
label="通道ID" <Input placeholder="刻录机名称" />
name="PassageId" </Item>
rules={[
{
required: true,
message: '请输入通道ID',
},
]}
>
<TextArea placeholder="视频监控点ID,请用英文逗好分隔" />
</Item>
</Col> </Col>
<Col span={24}> <Col span={11}>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>{type}</p> <Item label="默认播放方式" name="PlayModel">
<Select defaultValue="轻应用" value={selectChange} onChange={onChange}>
<Option value="轻应用">轻应用</Option>
<Option value="直播流">直播流</Option>
</Select>
</Item>
</Col> </Col>
{(() => {
switch (type) {
case '海康1.2':
return <>
<Col span={11}>
<Item
label="设备序列号"
name="EquipmentNumber"
rules={[
{
required: true,
message: '请输入设备序列号',
},
]}
>
<Input placeholder="视频设备序列号" />
</Item>
</Col>
</>
case '海康NVR':
return <>
<Col span={11}>
<Item
label="视频流地址"
name="HLSPath"
rules={[
{
required: true,
message: '请输入视频流地址',
},
]}
>
<TextArea placeholder="视频流地址" />
</Item>
</Col>
</>
}
})()}
<Col span={12}> <Col span={12}>
<Item <Item label="默认通道ID" name="DefaultPassageId">
label="刻录机名称" <Input placeholder="默认通道ID" />
name="RecorderName" </Item>
>
<Input placeholder="刻录机名称" />
</Item>
</Col> </Col>
</Row>
</>
);
case '海康':
return (
<>
<Row>
<Col span={11}> <Col span={11}>
<Item <Item
label="视频名称" label="登录IP"
name="VideoName" name="LoginIp"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入视频名称', message: '请输入登录ID',
}, },
]} ]}
> >
<Input placeholder="视频监控点名称" /> <Input placeholder="登录ID" />
</Item> </Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Item <span
label="默认通道ID" style={{
name="DefaultPassageId" position: 'absolute',
> left: '9%',
<TextArea placeholder="默认视频监控点ID,请用英文逗好分隔" /> top: '9%',
</Item> color: 'red',
fontSize: '16px',
}}
>
*
</span>
<Item
label="播放零通道"
name="PlayZeroChannel"
rules={[
{
validator: (rule, value) => {
if (form.getFieldsValue().PlayZeroChannel == '') {
return Promise.reject('请输入设备端口');
}
return Promise.resolve();
},
},
]}
>
<Select defaultValue="否" value={selectChange1} onChange={onChange1}>
<Option value="否"></Option>
<Option value="是"></Option>
</Select>
</Item>
</Col> </Col>
<Col span={11}> <Col span={11}>
<Item <Item
label="视频服务地址" label="设备端口"
name="VideoPath" name="EquipmentPort"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入视频名称', message: '请输入设备端口',
}, },
]} ]}
> >
<Input placeholder="视频服务地址" /> <Input placeholder="设备端口" />
</Item> </Item>
</Col> </Col>
</Row> <Col span={12}>
</Form> <Item
</Modal> label="视频端口"
) name="VideoPort"
} else { rules={[
return ( {
<Modal required: true,
visible={visible} message: '请输入视频端口',
title={ },
kind === 'add' ? <span style={{ fontSize: '18px' }}>新增配置</span> : <span style={{ fontSize: '18px' }}>编辑配置</span> ]}
} >
width="1000px" <Input placeholder="视频端口" />
destroyOnClose </Item>
maskClosable={false}
onCancel={onCancel}
onOk={onSubmit}
>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>基本信息</p>
<Form form={form} labelCol={{ span: 7 }} style={{ height: '27rem', overflowY: 'scroll' }} autocomplete='off'>
<Row>
<Col span={11}>
<Item
label="名称"
name="Name"
rules={[
{
required: true,
message: '请输入名称',
},
]}
>
<Input placeholder="请输入名称" />
</Item>
</Col> </Col>
{(() => {
switch (type) {
case '萤石云':
return <>
<Col span={12}>
<span style={{ position: 'absolute', left: '12%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="视频厂商"
name="VideoManufacturer"
>
<Input placeholder="萤石云" disabled />
</Item>
</Col>
</>
case '海康':
return <>
<Col span={12}>
<span style={{ position: 'absolute', left: '12%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="视频厂商"
name="VideoManufacturer"
>
<Input placeholder="海康" disabled />
</Item>
</Col>
</>
}
})()}
<Col span={11}> <Col span={11}>
<Item <Item
label="登录名" label="媒体流端口"
name="LoginName" name="StreamingMediaPort"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入登录名', message: '请输入媒体流端口',
}, },
]} ]}
> >
<Input placeholder="账户登录名" /> <Input placeholder="媒体流端口" />
</Item> </Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Item <span
label="登录密码" style={{
name="LoginPwd" position: 'absolute',
rules={[ left: '12%',
{ top: '9%',
required: true, color: 'red',
message: '请输入登录密码', fontSize: '16px',
}, }}
]} >
*
</span>
<Item
label="码流类型"
name="StreamType"
rules={[
{
validator: (rule, value) => {
if (form.getFieldsValue().StreamType == '') {
return Promise.reject('请选择码流类型');
}
return Promise.resolve();
},
},
]}
>
<Select
defaultValue="主码流"
value={selectChange2}
onChange={onChange2}
> >
<Input placeholder="请输入登录密码" /> <Option value="主码流">主码流</Option>
</Item> <Option value="子码流">子码流</Option>
</Select>
</Item>
</Col> </Col>
<Col span={11}> <Col span={11}>
<Item <Item
label="设备编码" label="视频名称"
name="EquipmentCode" name="VideoName"
rules={[ rules={[
{ {
required: true, required: true,
message: '请输入设备编码', message: '请输入视频名称',
}, },
]} ]}
> >
<Input placeholder="设备台账对应设备编码字段" /> <Input placeholder="视频名称" />
</Item> </Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Item <Item label="刻录机名称" name="RecorderName">
label="通道ID" <Input placeholder="刻录机名称" />
name="PassageId" </Item>
rules={[
{
required: true,
message: '请输入通道ID',
},
]}
>
<Input placeholder="视频设备通道ID" />
</Item>
</Col> </Col>
<Col span={24}> <Col span={11}>
<p style={{ fontSize: '16px', marginLeft: '16px' }}>{type}</p> <Item label="默认通道ID" name="DefaultPassageId">
<Input placeholder="默认通道ID" />
</Item>
</Col> </Col>
{(() => { </Row>
switch (type) { </>
case '萤石云': );
return <> }
<Row> })()}
<Col span={11}> </Row>
<Item </Form>
label="视频路径" </Modal>
name="VideoPath" );
rules={[ }
{ };
required: true, export default AddModal;
message: '请输入视频路径',
},
]}
>
<TextArea placeholder="视频Rtmp路径,请使用英文逗号分隔" />
</Item>
</Col>
<Col span={12}>
<Item
label="HLS路径"
name="HLSPath"
rules={[
{
required: true,
message: '请输入HLS路径',
},
]}
>
<TextArea placeholder="视频HLS路径,请使用英文逗号分隔" />
</Item>
</Col>
<Col span={11}>
<Item
label="设备序列号"
name="EquipmentNumber"
rules={[
{
required: true,
message: '请输入设备序列号',
},
]}
>
<Input placeholder="视频设备序列号" />
</Item>
</Col>
<Col span={12}>
<Item
label="刻录机名称"
name="RecorderName"
>
<Input placeholder="刻录机名称" />
</Item>
</Col>
<Col span={11}>
<Item
label="默认播放方式"
name="PlayModel"
>
<Select
defaultValue="轻应用"
value={selectChange}
onChange={onChange}
>
<Option value="轻应用">轻应用</Option>
<Option value="直播流">直播流</Option>
</Select>
</Item>
</Col>
<Col span={12}>
<Item
label="默认通道ID"
name="DefaultPassageId"
>
<Input placeholder="默认通道ID" />
</Item>
</Col>
</Row>
</>
case '海康':
return <>
<Row>
<Col span={11}>
<Item
label="登录IP"
name="LoginIp"
rules={[
{
required: true,
message: '请输入登录ID',
},
]}
>
<Input placeholder="登录ID" />
</Item>
</Col>
<Col span={12}>
<span style={{ position: 'absolute', left: '9%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="播放零通道"
name="PlayZeroChannel"
rules={[
{
validator: (rule, value) => {
if (form.getFieldsValue().PlayZeroChannel == '') {
return Promise.reject('请输入设备端口')
}
return Promise.resolve();
}
}
]}
>
<Select
defaultValue="否"
value={selectChange1}
onChange={onChange1}
>
<Option value="否"></Option>
<Option value="是"></Option>
</Select>
</Item>
</Col>
<Col span={11}>
<Item
label="设备端口"
name="EquipmentPort"
rules={[
{
required: true,
message: '请输入设备端口',
},
]}
>
<Input placeholder="设备端口" />
</Item>
</Col>
<Col span={12}>
<Item
label="视频端口"
name="VideoPort"
rules={[
{
required: true,
message: '请输入视频端口',
},
]}
>
<Input placeholder="视频端口" />
</Item>
</Col>
<Col span={11}>
<Item
label="媒体流端口"
name="StreamingMediaPort"
rules={[
{
required: true,
message: '请输入媒体流端口',
},
]}
>
<Input placeholder="媒体流端口" />
</Item>
</Col>
<Col span={12}>
<span style={{ position: 'absolute', left: '12%', top: '9%', color: 'red', fontSize: '16px' }}>*</span>
<Item
label="码流类型"
name="StreamType"
rules={[
{
validator: (rule, value) => {
if (form.getFieldsValue().StreamType == '') {
return Promise.reject('请选择码流类型')
}
return Promise.resolve();
}
}
]}
>
<Select
defaultValue="主码流"
value={selectChange2}
onChange={onChange2}
>
<Option value="主码流">主码流</Option>
<Option value="子码流">子码流</Option>
</Select>
</Item>
</Col>
<Col span={11}>
<Item
label="视频名称"
name="VideoName"
rules={[
{
required: true,
message: '请输入视频名称',
},
]}
>
<Input placeholder="视频名称" />
</Item>
</Col>
<Col span={12}>
<Item
label="刻录机名称"
name="RecorderName"
>
<Input placeholder="刻录机名称" />
</Item>
</Col>
<Col span={11}>
<Item
label="默认通道ID"
name="DefaultPassageId"
>
<Input placeholder="默认通道ID" />
</Item>
</Col>
</Row>
</>
}
}
)()}
</Row>
</Form>
</Modal>
)
}
}
export default AddModal;
\ No newline at end of file
...@@ -58,7 +58,20 @@ const videoManager = () => { ...@@ -58,7 +58,20 @@ const videoManager = () => {
key: 'Name', key: 'Name',
width: 200, width: 200,
align: 'center', align: 'center',
render: item => searchStyle(item), onCell: () => ({
style: {
maxWidth: 200,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: item => (
<Tooltip placement="topLeft" title={item}>
{searchStyle(item)}
</Tooltip>
),
}, },
{ {
title: '视频厂商', title: '视频厂商',
...@@ -75,18 +88,18 @@ const videoManager = () => { ...@@ -75,18 +88,18 @@ const videoManager = () => {
align: 'center', align: 'center',
render: item => searchStyle(item), render: item => searchStyle(item),
}, },
{ // {
title: '登录密码', // title: '登录密码',
dataIndex: 'LoginPwd', // dataIndex: 'LoginPwd',
key: 'LoginPwd', // key: 'LoginPwd',
width: 350, // width: 350,
align: 'center', // align: 'center',
}, // },
{ {
title: '设备编码', title: '设备编码',
dataIndex: 'EquipmentCode', dataIndex: 'EquipmentCode',
key: 'EquipmentCode', key: 'EquipmentCode',
width: 150, width: 200,
align: 'center', align: 'center',
render: item => searchStyle(item), render: item => searchStyle(item),
}, },
...@@ -94,15 +107,43 @@ const videoManager = () => { ...@@ -94,15 +107,43 @@ const videoManager = () => {
title: '通道ID', title: '通道ID',
dataIndex: 'PassageId', dataIndex: 'PassageId',
key: 'PassageId', key: 'PassageId',
width: 100, width: 150,
align: 'center', align: 'center',
onCell: () => ({
style: {
maxWidth: 150,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: item => (
<Tooltip placement="topLeft" title={item}>
{item}
</Tooltip>
),
}, },
{ {
title: '刻录机名称', title: '刻录机名称',
dataIndex: 'RecorderName', dataIndex: 'RecorderName',
key: 'RecorderName', key: 'RecorderName',
width: 100, width: 150,
align: 'center', align: 'center',
onCell: () => ({
style: {
maxWidth: 150,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: item => (
<Tooltip placement="topLeft" title={item}>
{item}
</Tooltip>
),
}, },
{ {
// title: '录入时间', // title: '录入时间',
...@@ -272,6 +313,7 @@ const videoManager = () => { ...@@ -272,6 +313,7 @@ const videoManager = () => {
VideoType: type, VideoType: type,
pageIndex: 1, pageIndex: 1,
pageSize: 1000, pageSize: 1000,
QueryWhere: searchWord,
}).then(res => { }).then(res => {
setLoading(false); setLoading(false);
if (res.msg === 'Ok') { if (res.msg === 'Ok') {
...@@ -389,27 +431,51 @@ const videoManager = () => { ...@@ -389,27 +431,51 @@ const videoManager = () => {
</Row> </Row>
<Spin spinning={loading} tip="loading"> <Spin spinning={loading} tip="loading">
<div className={styles.table}> <div className={styles.table}>
<Table {tableData.length > 0 ? (
size="small" <Table
bordered size="small"
rowKey={record => record.Id} bordered
columns={columns} rowKey={record => record.Id}
dataSource={tableData} columns={columns}
scroll={{ y: 'calc(100vh - 210px)', x: 'max-content' }} dataSource={tableData}
onRow={record => ({ scroll={{ y: 'calc(100vh - 210px)', x: 'max-content' }}
onDoubleClick: event => { onRow={record => ({
event.stopPropagation(); onDoubleClick: event => {
edit(record); event.stopPropagation();
}, // 双击 edit(record);
})} }, // 双击
pagination={{ })}
showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`, pagination={{
pageSizeOptions: [10, 20, 50, 100], showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`,
defaultPageSize: 20, pageSizeOptions: [10, 20, 50, 100],
showQuickJumper: true, defaultPageSize: 20,
showSizeChanger: true, showQuickJumper: true,
}} showSizeChanger: true,
/> }}
/>
) : (
<Table
size="small"
bordered
rowKey={record => record.Id}
columns={columns}
dataSource={tableData}
scroll={{ y: 'calc(100vh - 116px)', x: 'max-content' }}
onRow={record => ({
onDoubleClick: event => {
event.stopPropagation();
edit(record);
}, // 双击
})}
pagination={{
showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`,
pageSizeOptions: [10, 20, 50, 100],
defaultPageSize: 20,
showQuickJumper: true,
showSizeChanger: true,
}}
/>
)}
</div> </div>
</Spin> </Spin>
<AddModal <AddModal
......
...@@ -532,6 +532,7 @@ const UserManage = () => { ...@@ -532,6 +532,7 @@ const UserManage = () => {
// 点击树节点,获取当前机构下所有用户 // 点击树节点,获取当前机构下所有用户
const onSelect = (props, e) => { const onSelect = (props, e) => {
console.log(props);
if (e) { if (e) {
props[0] = e.node.key; props[0] = e.node.key;
} else { } else {
......
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