From ae3833a1fc16bd3c9fd13f8301397e5835a9e49c Mon Sep 17 00:00:00 2001 From: zhangyongtian <1181606322@qq.com> Date: Sun, 15 Sep 2024 15:31:02 +0800 Subject: [PATCH] fix: 自行排查更改、流程组件完善 --- gz-customerSystem/src/components/ProgressStep/VisitStep.jsx | 39 +++ gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx | 451 +++++++++++++++++++++++++++++++++++++++++++++ gz-customerSystem/src/views/register/index.less | 13 gz-customerSystem/src/views/register/visit/preview.jsx | 31 +- gz-customerSystem/src/views/register/visit/SelfInspection.jsx | 6 gz-customerSystem/src/views/register/visit/index.jsx | 2 gz-customerSystem/src/components/ProgressStep/index.less | 11 gz-customerSystem/src/views/register/visit/SelfPreview.jsx | 9 8 files changed, 524 insertions(+), 38 deletions(-) diff --git a/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx b/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx index 0dfa948..e81b8b9 100644 --- a/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx +++ b/gz-customerSystem/src/components/ProgressStep/VisitStep.jsx @@ -42,6 +42,27 @@ setProType('handleCaseFlowList') }, [progressData]) + //详细结果的处理 + const typeDom = (data) => { + //审核结果同意 + if (data.auditResult && data.auditResult == '24_00004-1') { + return <span>审核结果:<span style={{ color: '#00B42A' }}>{data.auditResultName}</span></span> + } + //审核结果不同意 + if (data.auditResult && data.auditResult == '24_00004-2') { + return <span>审核结果:<span style={{ color: '#FF4D4F' }}>{data.auditResultName}</span></span> + } + //化解结果成功 + if (data.mediResult && data.mediResult == '22_00025-1') { + return <span>审核结果:<span style={{ color: '#00B42A' }}>{data.mediResultName}</span></span> + } + //化解结果不成功 + if (data.mediResult && data.mediResult == '22_00025-2') { + return <span>审核结果:<span style={{ color: '#FF4D4F' }}>{data.mediResultName}</span></span> + } + return <span>{data.handleNotes || '-'}</span> + } + return ( <Fragment> {hasTab && @@ -62,16 +83,18 @@ return ( <div key={t + 1}> <div className="myStep-item"> - {t === progressData[proType].length - 1 ? null : <div className={`${!x.handleContent ? 'myStep-item-divider' : x.fileInfoList?.length > 0 ? 'myStep-item-divider2' : "myStep-item-divider1"} ${x.status === '2' && 'myStep-item-divider-success'}`} />} - <div className={`myStep-item-icon1 myStep-item-${x.status === 1 ? 'noStarted1' : 'success1'}`}> - <div className="myStep-item-title">{x.nodeShowName || '事件流转'}</div> - <img className='myStep-item-img' src={x.status === 1 ? ledger_8 : iconMap[x.taskType]} alt="" /> + <div> + <div className={`myStep-item-icon1 myStep-item-${x.status === 1 ? 'noStarted1' : 'success1'}`}> + <div className="myStep-item-title">{x.nodeShowName || '事件流转'}</div> + <img className='myStep-item-img' src={x.status === 1 ? ledger_8 : iconMap[x.taskType]} alt="" /> + </div> + {t === progressData[proType].length - 1 ? null : <div className='myStep-item-divider' />} </div> <div className="myStep-item-right"> {t === progressData[proType].length - 1 ? <div> <div className="myStep-item-p" style={{ color: 'rgba(0,0,0,0.50)' }}> - {x.processName} + {x.processName || '-'} </div> <div className="myStep-item-p"> <span>{x.handleUnitName || '-'}</span> @@ -96,7 +119,11 @@ x.handleNotes && <div className='myStep-item-p-yy' style={{ width: '200px' }}> <span className='myStep-item-p-yy-l'> - <span><Tooltip placement="top" title={x.handleNotes || ''}><span>{x.handleNotes || '-'}</span></Tooltip></span> + <span> + <Tooltip placement="top" title={x.handleNotes || ''}> + {typeDom(x)} + </Tooltip> + </span> </span> </div> } diff --git a/gz-customerSystem/src/components/ProgressStep/index.less b/gz-customerSystem/src/components/ProgressStep/index.less index e574fab..d298d6a 100644 --- a/gz-customerSystem/src/components/ProgressStep/index.less +++ b/gz-customerSystem/src/components/ProgressStep/index.less @@ -3,7 +3,7 @@ .myStep { &-item { position: relative; - padding-bottom: 32px; + padding-bottom: 34px; &-success { background-color: @main-color; @@ -74,16 +74,15 @@ &-divider { position: absolute; - top: 0; + top: 56px;//52+4 left: 24px; - width: 3px; - height: 32px+52px; - padding-top: 22px; + width: 2px; + bottom: 4px; &::after { content: ''; display: inline-block; - height: 32px+52px; + height: 100%; border-left: 2px solid; border-color: @divider-color; } diff --git a/gz-customerSystem/src/views/register/index.less b/gz-customerSystem/src/views/register/index.less index 4b3a281..d016546 100644 --- a/gz-customerSystem/src/views/register/index.less +++ b/gz-customerSystem/src/views/register/index.less @@ -523,12 +523,13 @@ } .reviewLine { - height: calc(100% - 19px); - width: 14px; - display: flex; - align-items: center; - justify-content: center; - position: relative; + height: calc(100% - 23px); + width: 14px; + display: flex; + align-items: center; + justify-content: center; + position: relative; + margin-top: 4px; &::before { content: ''; diff --git a/gz-customerSystem/src/views/register/visit/SelfInspection.jsx b/gz-customerSystem/src/views/register/visit/SelfInspection.jsx index 2bbe0fe..5d3bf4e 100644 --- a/gz-customerSystem/src/views/register/visit/SelfInspection.jsx +++ b/gz-customerSystem/src/views/register/visit/SelfInspection.jsx @@ -6,7 +6,7 @@ import '../index.less'; import { Space } from 'antd'; import { Button, Steps, Message } from '@arco-design/web-react'; -import VisitorRegister from './component/visitorRegister'; +import VisitorRegister from './component/SelfVisitorRegister'; import Preview from './preview'; const Step = Steps.Step; @@ -222,13 +222,13 @@ <div style={{ position: 'relative' }}> <NewPage pageHead={ - { breadcrumbData: [{ title: '工作台' }, { title: '来访登记' }], title: '来访登记' } + { breadcrumbData: [{ title: '工作台' }, { title: '来访登记' }], title: '自行排查' } } > <Fragment> <div style={{ backgroundColor: '#fff', margin: '12px 16px 0px 16px', paddingTop: '16px', paddingLeft: '91px' }}> <Steps type='navigation' current={current}> - <Step title='来访登记' disabled /> + <Step title='排查登记' disabled /> <Step title='事件流转' disabled /> <Step title='办理反馈' disabled /> <Step title='结案审核' disabled /> diff --git a/gz-customerSystem/src/views/register/visit/SelfPreview.jsx b/gz-customerSystem/src/views/register/visit/SelfPreview.jsx index 1b42818..ec84936 100644 --- a/gz-customerSystem/src/views/register/visit/SelfPreview.jsx +++ b/gz-customerSystem/src/views/register/visit/SelfPreview.jsx @@ -7,7 +7,12 @@ import PreviewImage from '@/components/PreviewImage'; const Preview = (props) => { - const [data, setData] = useState({}) + const [data, setData] = useState({}); + const levelColorMap = { + 1: '#F53F3F', + 2: '#EF6C24', + 3: '#00B42A', + } useEffect(() => { console.log(props.data); @@ -108,7 +113,7 @@ <div className="title"> <div className="title-text">事项等级</div> </div> - <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div> + <div style={{ display: 'flex' }}><div style={{ backgroundColor: levelColorMap[props.data?.caseLevel], marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div> </Col> <Col span={8}> <div><div className="title-text">来访时间</div></div> diff --git a/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx new file mode 100644 index 0000000..4bc0b21 --- /dev/null +++ b/gz-customerSystem/src/views/register/visit/component/SelfVisitorRegister.jsx @@ -0,0 +1,451 @@ +import React, { useState, useEffect, useRef } from "react"; +import { Row, Col, Space, Tooltip, Button } from 'antd'; +import { Form, Input, Radio, Select, DatePicker, Cascader, Modal, Upload, InputNumber } from '@arco-design/web-react'; +import PersonCard from '@/components/personCard'; +import * as $$ from '@/utils/utility'; +import { + question1, +} from '@/assets/images'; +import '../../index.less'; +import ApplyDialog from "./applyDialog"; +import AgentDialog from "./agentDialog"; +import MapView from './map'; +import { scan } from '@/assets/images/icon'; +import { EventLevelDrawer, MattersDetail } from './levelDetail'; +import DocumentScanner from '../../matterDetail/FileUpLoad'; +import FileTable from "../../matterDetail/FileTable"; + + +const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息 +const FormItem = Form.Item; +const InputSearch = Input.Search; + + +const VisitorRegister = (props) => { + const [dialogType, setDialogType] = useState();//添加当事人的类型 + const [addVisabled, setAddVisabled] = useState(false);//添加当事人弹窗控制 + const [fakeData, setFakeData] = useState([]);//当事人信息数据 + const [scanFile, setScanFile] = useState(false); + const [ocrText, setOcrText] = useState(''); + + const [mapView, setMapView] = useState(false); + const [visible, setVisible] = useState(false); + const [apply, setApply] = useState(false); + const [editData, setEditData] = useState(null); + const [agentVisible, setAgentVisible] = useState(false); + + const peopleMap = { + '15_020008-1': '申请方', + '15_020008-2': '被申请方', + '24_00006-1': '申请方代理人', + '24_00006-2': '被申请方代理人' + } + + useEffect(() => { + if (props.formRef.current) { + //引入当事人数据 + props.formRef.current.setFieldValue('fakeData', fakeData) + } + }, [fakeData]) + + useEffect(() => { + setFakeData(props.partyList || []) + }, [props.partyList]) + + //获取当前时间 + const getFormattedDateTime = () => { + let now = new Date(); + let year = now.getFullYear(); + let month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的,所以要+1 + let day = now.getDate().toString().padStart(2, '0'); + let hours = now.getHours().toString().padStart(2, '0'); + let minutes = now.getMinutes().toString().padStart(2, '0'); + + return `${year}-${month}-${day} ${hours}:${minutes}`; + } + + //添加当事人 + const handleAdd = (type) => { + if (type === '24_00006-1' || type === '24_00006-2') { + setAgentVisible(true) + } else { + setAddVisabled(true) + } + setDialogType(type) + } + + const handleConfirm = (scanContent) => { + // 处理确认逻辑 + props.formRef.current.setFieldValue(ocrText, scanContent) + setScanFile(false); + console.log(scanContent, 'scanContent') + + }; + + const handleCancel = () => { + // 处理取消逻辑 + setScanFile(false); + }; + + //添加当事人 + const handleAddParty = (value, isEdit) => { + console.log(value); + if (isEdit) { + //编辑 + const newList = fakeData.map(item => { + if (item.id === value.id) { + return value + } else { + return item + } + }) + setFakeData(newList) + setEditData(null) + } else { + setFakeData([...fakeData, { + ...value + }]) + } + } + + //删除当事人 + const handleDeleteParty = (event, value) => { + event.stopPropagation(); + const filterData = fakeData.filter(item => item.id !== value.id) + setFakeData(filterData) + } + + //编辑 + const handleEdit = (value) => { + if (value.perType === '15_020008-1' || value.perType === '15_020008-2') { + //当事人 + setAddVisabled(true) + } else { + //代理人 + setAgentVisible(true) + } + setDialogType(value.perType) + setEditData(value) + } + + return ( + <div className='dataSync-page' style={{ ...props.style, marginTop: '8px' }}> + <Col span={24} style={{ display: 'flex', alignItems: 'center' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px', }}></div><h4>当事人信息</h4> + </Space> + </Col> + <div style={{ margin: '16px 0' }}> + <PersonCard + isCheck={true} + data={fakeData} + handleAdd={handleAdd} + handleDeleteParty={handleDeleteParty} + handleEdit={handleEdit} + /> + </div> + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>纠纷基本情况</h4> + </Space> + </Col> + <Form + ref={props.formRef} + layout='vertical' + requiredSymbol={false} + scrollToFirstError={true} + initialValues={{ + caseLevel: 3, + occurTime: getFormattedDateTime(), + majorStatus: 0, + }}//默认值 + > + <Row gutter={[32, 0]}> + <Col span={8}> + <FormItem + label={<div style={{ display: 'flex' }}> + 事项等级 + <Tooltip onClick={() => setApply(true)}> + <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} /> + </Tooltip> + </div> + } + field='caseLevel' + > + <Select placeholder='请选择事项等级' allowClear options={$$.options.caseLevelList}> + </Select> + </FormItem> + </Col> + <Col span={8}> + <FormItem label='涉及人数(人)' field='peopleNum'> + <InputNumber placeholder='请填写' /> + </FormItem> + </Col> + <Col span={8}> + <FormItem label='涉及金额(元)' field='amount'> + <InputNumber placeholder='请填写' /> + </FormItem> + </Col> + <Col span={8}> + <FormItem + label={(<div style={{ display: 'flex' }}>纠纷类型<div className="must">必填</div></div>)} + rules={[{ message: '请选择纠纷类型', required: true }]} + field='myCaseType' + > + <Cascader + placeholder='请选择' + options={$$.caseTypeSelect.caseTypeSelect} + onChange={(value, option) => { + if (option) { + props.formRef.current.setFieldsValue({ + caseTypeFirst: option[0].value, + caseTypeFirstName: option[0].label, + caseType: option[1].value, + caseTypeName: option[1].label, + }) + } else { + //清除数据 + props.formRef.current.setFieldsValue({ + caseTypeFirst: undefined, + caseTypeFirstName: undefined, + caseType: undefined, + caseTypeName: undefined, + }) + } + }} + allowClear + /> + </FormItem> + </Col> + <Col span={8}> + <FormItem + label={(<div style={{ display: 'flex' }}>纠纷发生时间<div className="must">必填</div></div>)} + rules={[{ message: '请选择纠纷发生时间', required: true }]} + field='occurTime' + > + <DatePicker + style={{ width: '100%' }} + placeholder='请选择' + format='YYYY-MM-DD HH:mm' + showTime={true} + /> + </FormItem> + </Col> + <Col span={8}> + <FormItem + label={(<div style={{ display: 'flex' }}>纠纷发生地点<div className="must">必填</div></div>)} + rules={[{ message: '请选择纠纷发生地点', required: true }]} + field='addr' + > + <InputSearch + placeholder='选择纠纷发生地的详细地址' + searchButton='选择' + readOnly={true} // 设置为只读,防止直接编辑 + onSearch={() => setMapView(true)} + /> + </FormItem> + </Col> + <Col span={8}> + <FormItem + label={(<div style={{ display: 'flex' }}>问题属地<div className="must">必填</div></div>)} + field='myQuesAddress' + rules={[{ message: '请选择问题属地', required: true }]} + > + <Cascader + placeholder='请选择' + options={$$.locationOption()} + showSearch + onChange={(value, option) => { + if (option) { + console.log(option) + props.formRef.current.setFieldsValue({ + // queProv: option[0].value, + // queProvName: option[0].label, + // queCity: option[1].value, + // queCityName: option[1].label, + queArea: option[0].value, + queAreaName: option[0].label, + queRoad: option[1] && option[1].value || '', + queRoadName: option[1] && option[1].label || '', + }) + } else { + //清除数据 + props.formRef.current.setFieldsValue({ + queProv: undefined, + queProvName: undefined, + queCity: undefined, + queCityName: undefined, + queArea: undefined, + queAreaName: undefined, + queRoad: undefined, + queRoadName: undefined, + }) + } + }} + allowClear + /> + </FormItem> + </Col> + <Col span={24}> + <FormItem + label={<div style={{ display: 'flex' }}> + 事项概况 + <Tooltip onClick={() => setVisible(true)}> + <img src={question1} alt="" style={{ width: '13px', height: '13px', margin: '4px 4px 0px 4px' }} /> + </Tooltip> + <div className="must" style={{ marginLeft: '4px' }}>必填</div> + <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} /> + <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseDes') }}>识别材料</div> + </div> + } + field='caseDes' + rules={[{ message: '请填写事项概况', required: true }]} + > + <Input.TextArea + maxLength={2000} + showWordLimit + rows={5} + placeholder='请完整描述事项概况,应具备5要素:发生时间+发生地点+人物情况+事项起因+事项经过' + wrapperStyle={{ width: '100%' }} + /> + </FormItem> + </Col> + <Col span={24}> + <FormItem + label={<div style={{ display: 'flex' }}> + 申请请求 + {/* <Tooltip onClick={() => setApply(true)}> + <img src={question1} alt="" style={{ width: '13px', height: '13px', margin:'4px 4px 0px 4px' }} /> + </Tooltip> */} + <div className="must">必填</div> + <img src={scan} alt="" style={{ marginRight: '-2px', marginLeft: '8px' }} /> + <div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px', cursor: 'pointer' }} onClick={() => { setScanFile(true); setOcrText('caseClaim') }}>识别材料</div> + </div> + } + field='caseClaim' + rules={[{ message: '请填写申请请求', required: true }]} + + > + <Input.TextArea + maxLength={2000} + showWordLimit + rows={5} + placeholder='希望相关部门如何处理,建议分条描述,如请求1,请求2...' + wrapperStyle={{ width: '100%' }} + /> + </FormItem> + </Col> + <div style={{ marginLeft: '16px', padding: '12px 16px', backgroundColor: '#F2F3F5', borderRadius: '2px', marginTop: '4px', display: 'flex', alignItems: 'center' }}> + <FormItem + label='是否重大矛盾纠纷' + style={{ width: '300px', marginBottom: 0 }} + field='majorStatus' + layout='horizontal' + labelCol={{ span: 11 }} + wrapperCol={{ span: 13 }} + > + <RadioGroup options={[{ value: 0, label: '否' }, { value: 1, label: '是' }]} /> + </FormItem> + </div> + </Row> + + </Form > + <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}> + <Space size='small'> + <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4> + </Space> + </Col> + <div style={{ marginBottom: '65px' }}> + <FileTable + mainId={props.mainId} + fileInfoList={props.fileInfoList} + isReview={false} + handleSaveList={(list) => { + props.formRef.current.setFieldValue('fileInfoList', list) + }} + /> + </div> + <DocumentScanner + visible={scanFile} + onConfirm={handleConfirm} + onCancel={handleCancel} + /> + <Modal + title={(editData ? '修改' : '添加') + peopleMap[dialogType]} + visible={addVisabled} + onOk={() => setAddVisabled(false)} + onCancel={() => { + setAddVisabled(false) + setEditData(null) + }} + autoFocus={false} + focusLock={true} + footer={null} + unmountOnExit={true} + maskClosable={false} + > + <ApplyDialog + dialogType={dialogType} + onClose={() => setAddVisabled(false)} + handleAddParty={handleAddParty} + editData={editData} + mainId={props.mainId} + /> + </Modal> + <Modal + title={(editData ? '修改' : '添加') + peopleMap[dialogType]} + visible={agentVisible} + onOk={() => setAgentVisible(false)} + onCancel={() => { + setAgentVisible(false) + setEditData(null) + }} + autoFocus={false} + focusLock={true} + footer={null} + unmountOnExit={true} + maskClosable={false} + > + <AgentDialog + handleAddParty={handleAddParty} + onClose={() => setAgentVisible(false)} + fakeData={fakeData} + dialogType={dialogType} + editData={editData} + mainId={props.mainId} + /> + </Modal> + <Modal + style={{ width: '1200px' }} + visible={mapView} + onCancel={() => setMapView(false)} + footer={null} + title='选择纠纷发生地' + centered + unmountOnExit={true} + maskClosable={false} + > + <MapView + selectAdd={(data) => { + props.formRef.current.setFieldsValue({ + addr: data.addName, + lng: data.pt.lng, + lat: data.pt.lat, + }) + setMapView(false) + }} + /> + </Modal> + <MattersDetail + visible={visible} + onClose={() => setVisible(false)} + /> + <EventLevelDrawer + visible={apply} + onClose={() => setApply(false)} + /> + </div > + ) +} + +export default VisitorRegister; \ No newline at end of file diff --git a/gz-customerSystem/src/views/register/visit/index.jsx b/gz-customerSystem/src/views/register/visit/index.jsx index 3f150f2..6783643 100644 --- a/gz-customerSystem/src/views/register/visit/index.jsx +++ b/gz-customerSystem/src/views/register/visit/index.jsx @@ -218,7 +218,7 @@ if (response.type) { if(isSelfAccept) { //自行受理 - navigate(`mediate/visit/handleFeedback?caseTaskId=${response.data}&caseId=${id}`) + navigate(`/mediate/visit/handleFeedback?caseTaskId=${response.data}&caseId=${id}`) } else { Message.success('提交成功!') navigate(`/mediate/visit/visitWorkBench`, { replace: true }) diff --git a/gz-customerSystem/src/views/register/visit/preview.jsx b/gz-customerSystem/src/views/register/visit/preview.jsx index 1e608dc..ff662fa 100644 --- a/gz-customerSystem/src/views/register/visit/preview.jsx +++ b/gz-customerSystem/src/views/register/visit/preview.jsx @@ -15,7 +15,12 @@ import PreviewImage from '@/components/PreviewImage'; const Preview = (props) => { - const [data, setData] = useState({}) + const [data, setData] = useState({}); + const levelColorMap = { + 1: '#F53F3F', + 2: '#EF6C24', + 3: '#00B42A', + } useEffect(() => { console.log(props.data); @@ -116,15 +121,21 @@ <div className="title"> <div className="title-text">事项等级</div> </div> - <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{props.data?.caseLevel || '-'}</div></div>级</div> + <div style={{ display: 'flex' }}> + <div style={{ backgroundColor: levelColorMap[props.data?.caseLevel], marginRight: '4px', borderRadius: '4px' }}> + <div style={{ color: '#FFFFFF', padding: '0px 6px' }}> + {props.data?.caseLevel || '-'} + </div> + </div>级 + </div> </Col> <Col span={8}> - <div><div className="title-text">来访时间</div></div> - <div>{props.data?.visitTime || '-'}</div> + <div><div className="title-text">事项来源</div></div> + <div>自行排查</div> </Col> <Col span={8}> - <div ><div className="title-text">来访人数(人)</div></div> - <div>{props.data?.visitPeopleNum || '-'}</div> + <div ><div className="title-text">来访形式</div></div> + <div>排查</div> </Col> <Col span={8}> <div ><div className="title-text">纠纷类型</div></div> @@ -157,14 +168,6 @@ <Col span={8}> <div ><div className="title-text">涉及金额(元)</div></div> <div>{$$.thousands(props.data?.amount) || '-'}</div> - </Col> - <Col span={8}> - <div ><div className="title-text">事项来源</div></div> - <div>{props.data?.canalName}</div> - </Col> - <Col span={16}> - <div ><div className="title-text">来访形式</div></div> - <div>来访</div> </Col> <Col span={24}> <div className="title"><div className="title-text">事项概况</div></div> -- Gitblit v1.8.0