src/assets/css/viewstyle.scss
@@ -175,8 +175,10 @@ border-color: $color6; } // 下拉框 .ant-select-selection:hover { border-color: $color5; .ant-select:not(.ant-select-disabled) { .ant-select-selection:hover { border-color: $color5; } } .ant-select-focused .ant-select-selection, .ant-select-selection:focus, .ant-select-selection:active { border-color: $color5; @@ -187,7 +189,7 @@ background-color: $color6; } // 输入框 .ant-input:hover { .ant-input:not([disabled]):hover { border-color: $color5; } .ant-input:focus, .ant-input:active { @@ -198,7 +200,7 @@ border-color: $color5; box-shadow: 0 0 0 2px $color2; } .ant-input-number:hover, .ant-input-number:focus, .ant-input-number:active, .ant-input-number-input:hover, .ant-input-number-input:focus, .ant-input-number-input:active, .ant-input-number-focused:hover, .ant-input-number-focused:focus, .ant-input-number-focused:active { .ant-input-number:not(.ant-input-number-disabled):hover, .ant-input-number:focus, .ant-input-number:active, .ant-input-number-input:hover, .ant-input-number-input:focus, .ant-input-number-input:active, .ant-input-number-focused:hover, .ant-input-number-focused:focus, .ant-input-number-focused:active { border-color: $color5; } .ant-input-number:focus, .ant-input-number:active { src/components/normalform/modalform/index.jsx
@@ -18,6 +18,7 @@ const MKCheckbox = asyncComponent(() => import('./mkCheckbox')) const StyleInput = asyncComponent(() => import('./styleInput')) const MKFileUpload = asyncComponent(() => import('@/tabviews/zshare/fileupload')) const MkPrintTemps = asyncComponent(() => import('@/menu/components/share/actioncomponent/actionform/mkPrintTemps')) const MKColor = asyncComponent(() => import('@/mob/colorsketch')) // const MKColor = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkColor')) const MkEditIcon = asyncComponent(() => import('@/components/mkIcon')) @@ -314,14 +315,22 @@ </Col> ) return } else if (item.type === 'printTemps') { content = <MkPrintTemps onChange={(val) => this.recordChange({[item.field]: val})}/> } if (!content) return if (item.help) { let help = null if (typeof(item.help) === 'function') { help = item.help(this.record) } else { help = <span style={{fontSize: '12px'}}>{item.help}</span> } fields.push( <Col span={item.span || 12} key={index}> <Form.Item label={label} help={<span style={{fontSize: '12px'}}>{item.help}</span>}> <Form.Item label={label} help={help}> {getFieldDecorator(item.field, { initialValue: item.initval, rules: item.rules src/menu/components/module/voucher/index.jsx
@@ -122,16 +122,17 @@ <ToolOutlined /> </Popover> <div className="voucher-box"> {card.wrap.type === 'createVoucher' ? <div className="voucher-header"> <Button className="add-background header-btn">保存并新增</Button> <Button className="add-background header-btn">保存</Button> <Button className="print-background header-btn">打印</Button> <Button className="out-background header-btn">更多</Button> {card.wrap.type === 'createVoucher' ? <div className="voucher-header" style={{padding: `10px ${card.wrap.space || 0}px`}}> <Button>保存并新增</Button> <Button>保存</Button> <Button>打印</Button> <Button>更多</Button> </div> : null} {card.wrap.type === 'checkVoucher' ? <div className="voucher-header"> <Button className="add-background header-btn">保存</Button> <Button className="print-background header-btn">打印</Button> <Button className="out-background header-btn">关闭</Button> {card.wrap.type === 'checkVoucher' ? <div className="voucher-header" style={{padding: `10px ${card.wrap.space || 0}px`}}> <Button>保存</Button> <Button>打印</Button> <Button>审核</Button> <Button>关闭</Button> </div> : null} <div className="voucher-body" style={{padding: `0px ${card.wrap.space || 0}px`}}> {card.wrap.type === 'createVoucher' || card.wrap.type === 'checkVoucher' ? <div className="pre-wrap"> @@ -158,8 +159,8 @@ 模板类型: <div>日常支出<DownOutlined/></div> </div> <Button className="close-temp header-btn">关闭</Button> <Button className="save-temp header-btn">保存</Button> <Button>关闭</Button> <Button>保存</Button> </div> : null} <VoucherTable config={card}/> {card.wrap.type === 'createVoucher' || card.wrap.type === 'checkVoucher' ? <div className="user">制单人:</div> : null} src/menu/components/module/voucher/index.scss
@@ -24,10 +24,13 @@ padding: 10px; border-bottom: 1px solid #eeeeee; .header-btn { .ant-btn { height: 28px; min-width: 80px; margin-right: 10px; background-color: #ffffff; border-color: #d8d8d8; color: rgba(0, 0, 0, 0.65); } } .voucher-body { @@ -76,12 +79,14 @@ } } } .header-btn { float: right; margin-left: 10px; } .pre-wrap { padding: 10px 0px; >.ant-btn { margin-right: 10px; background-color: #ffffff; border-color: #d8d8d8; color: rgba(0, 0, 0, 0.65); } } .voucher-date { display: inline-block; @@ -117,38 +122,6 @@ .user { padding-top: 15px; } } .add-background { background: #26C281; border-color: #26C281; color: #ffffff; } .print-background { background-color: #8E44AD; border-color: #8E44AD; color: #ffffff; } .out-background { background-color: rgb(50, 197, 210); border-color: rgb(50, 197, 210); color: #ffffff; } .save-temp { background-color: #1890ff; border-color: #1890ff; color: #ffffff; } .close-temp { background-color: #ffffff; border-color: #f5222d; color: #f5222d; } .system-background { background: #1890ff; border-color: #1890ff; color: #ffffff; } } .menu-voucher-box::after { src/menu/components/module/voucher/options.jsx
@@ -1,3 +1,4 @@ import React from 'react' import MenuUtils from '@/utils/utils-custom.js' /** @@ -56,6 +57,7 @@ {field: 'voucherType', values: ['createVoucher', 'checkVoucher']}, {field: 'voucherTypeText', values: ['createVoucher', 'checkVoucher']}, {field: 'voucherSign', values: ['createVoucher', 'checkVoucher']}, {field: 'printTemp', values: ['createVoucher', 'checkVoucher']}, {field: 'supModule', values: ['checkTemp', 'checkVoucher']}, {field: 'attachStatus', values: ['createVoucher', 'checkVoucher']}, ] @@ -138,6 +140,26 @@ ] }, { type: 'printTemps', field: 'printTemp', label: '打印模板', initval: wrap.printTemp || '', help: (record) => { if (record.printTemp) { return <span onClick={() => { sessionStorage.setItem('mk-print-temp', record.printTemp) window.open('#/hs') setTimeout(() => { sessionStorage.removeItem('mk-print-temp') }, 50) }} style={{color: '#1890ff', cursor: 'pointer', fontSize: '13px'}}>#查看模板</span> } return '' }, required: true }, { type: 'number', field: 'space', label: '留白', src/menu/components/share/actioncomponent/actionform/mkPrintTemps/index.jsx
@@ -74,6 +74,7 @@ showSearch allowClear value={value} dropdownMatchSelectWidth={false} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} onSelect={this.selectChange} onChange={(val) => val === undefined && this.selectChange('')} src/menu/datasource/verifycard/settingform/index.jsx
@@ -683,8 +683,7 @@ wrapClassName="mk-flow-type" visible={visible} width={400} maskClosable={false} closable={false} onCancel={() => this.setState({visible: false})} footer={[ <Button key="cancel" className="mk-green" onClick={() => this.execAddProcess('flowstart')}>发起</Button>, <Button key="confirm" className="mk-primary" onClick={() => this.execAddProcess('flowcheck')}>审批</Button> src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
@@ -79,7 +79,7 @@ } ] })( <InputNumber readOnly={nodetype !== 'node' && nodetype !== 'edge'} precision={0}/> <InputNumber readOnly={nodetype !== 'node' && nodetype !== 'edge' && nodetype !== 'end'} precision={0}/> )} </Form.Item> </Col> src/tabviews/custom/components/module/voucher/index.jsx
@@ -12,10 +12,8 @@ import ResetRemark from './resetRemark' import ResetAttach from './resetAttach' import LoadFromTemp from './loadFromTemp' import asyncComponent from '@/utils/asyncComponent' import './index.scss' const PrintVoucher = asyncComponent(() => import('./printVoucher')) const { confirm } = Modal class VoucherModule extends Component { @@ -39,6 +37,7 @@ username: sessionStorage.getItem('User_Name'), remark: '', attachments: 0, vouAduited: false, attachlist: [], oriAttachs: [], tempTypes: [], @@ -304,6 +303,7 @@ let data = [] if (res.voucher) { let disabled = res.voucher_status === 'true' data = res.voucher.map(line => { line.uuid = line.subject_id || '' @@ -320,6 +320,7 @@ line.exratename = line.foreign_exratename || '' line.local_currency = line.local_exratecode || '' line.foreign_currency_type = line.foreign_type || '' line.$disabled = disabled if (line.sup) { line.supAccounts = line.sup.map(cell => { @@ -351,7 +352,8 @@ data: data, attachlist: files, vouDate: res.fibvoucherdate ? moment(res.fibvoucherdate, 'YYYY-MM-DD') : null, charType: res.voucher_class, charType: res.voucher_class || 'keeping', vouAduited: res.voucher_status === 'true', charName: res.voucher_char, charInt: res.voucher_char_int, // orgcode: res.orgcode, @@ -1059,10 +1061,6 @@ this.setState({status: 'change', attachlist: vals, attachments: num}) } triggermore = () => { } triggerclose = () => { const { config, status } = this.state @@ -1139,72 +1137,227 @@ }) } render() { const { type, status, loading, config, orgcode, orgname, typeOptions, tempTypes, charType, charName, charInt, data, vouDate, username, remark, attachments, title, attachlist, tempTypeClass } = this.state triggerPrint = () => { const { config, BID } = this.state return ( <div className="menu-voucher-wrap" style={config.style}> {type === 'createVoucher' ? <div className="voucher-header"> <Button className="add-background header-btn" disabled={status === 'empty'} onClick={() => this.triggersave('add')}>保存并新增</Button> <Button className="add-background header-btn" disabled={status === 'empty' || status === 'saved'} onClick={() => this.triggersave()}>保存</Button> <PrintVoucher ID={config.uuid + 'print'} data={data} orgname={orgname} vouDate={vouDate} charName={charName} charInt={charInt} attachments={attachments} disabled={status !== 'saved'}/> <Dropdown overlay={<div className="mk-voucher-dropdown-wrap"> <SaveAsTemp tempTypes={tempTypes} onChange={this.triggerTempsave}/> <div className="split"></div> <LoadFromTemp tempTypes={tempTypes} onChange={this.triggerTempLoad}/> </div>} trigger={['click']}> <Button className="out-background header-btn" onClick={this.triggermore}>更多</Button> </Dropdown> </div> : null} {type === 'checkVoucher' ? <div className="voucher-header"> <Button className="add-background header-btn" disabled={status === 'empty' || status === 'saved'} onClick={() => this.triggersave()}>保存</Button> <PrintVoucher ID={config.uuid + 'print'} data={data} orgname={orgname} vouDate={vouDate} charName={charName} charInt={charInt} attachments={attachments} disabled={status !== 'saved'}/> <Button className="out-background header-btn" onClick={this.triggerclose}>关闭</Button> </div> : null} <div className="voucher-body" style={{padding: `0px ${config.wrap.space || 0}px`}}> {type === 'createVoucher' || type === 'checkVoucher' ? <div className="pre-wrap"> <div className="voucher-code"> <Select value={charType} dropdownClassName="mk-vcode-dropdown" onChange={(val, option) => this.setState({status: 'change', charType: val, charName: option.props.charName, charInt: option.props.charint})}> {typeOptions.map(option => <Select.Option key={option.id} value={option.voucher_class} charName={option.voucher_char} charint={option.voucher_char_int}>{option.voucher_char}</Select.Option> )} </Select> <InputNumber precision={0} min={1} value={charInt} autoComplete="off" onChange={(val) => this.setState({status: 'change', charInt: val})}/> 号 if (!config.wrap.printTemp) { notification.warning({ top: 92, message: '尚未设置打印模板!', duration: 5 }) return } window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: BID, tempId: config.wrap.printTemp, pageId: config.$pageId || '', dataM: sessionStorage.getItem('dataM') })))) } triggerAduit = () => { const { book, BID, voucherCode, username } = this.state if (!book) { notification.warning({ top: 92, message: '请选择账套!', duration: 5 }) return } let param = { func: 's_fcc_voucher_sub', ID: BID, status: 10, statusname: '已审核', voucher_code: voucherCode || '', username: username, fullname: sessionStorage.getItem('Full_Name') || '' } const that = this confirm({ content: '确定要审核吗?', onOk() { Api.genericInterface(param).then(res => { if (!res.status) { notification.warning({ top: 92, message: res.message, duration: 5 }) return } Modal.success({ title: '已经通过审核' }) that.getVoucher() }) }, onCancel() {} }) } triggerUnAduit = () => { const { book, BID, voucherCode, username } = this.state if (!book) { notification.warning({ top: 92, message: '请选择账套!', duration: 5 }) return } let param = { func: 's_fcc_voucher_sub', ID: BID, status: 0, statusname: '取消审核', voucher_code: voucherCode || '', username: username, fullname: sessionStorage.getItem('Full_Name') || '' } const that = this confirm({ content: '确认要取消审核吗?', onOk() { Api.genericInterface(param).then(res => { if (!res.status) { notification.warning({ top: 92, message: res.message, duration: 5 }) return } Modal.success({ title: '审核已取消' }) that.getVoucher() }) }, onCancel() {} }) } render() { const { type, status, loading, config, orgcode, typeOptions, tempTypes, charType, charInt, data, vouDate, username, remark, attachments, title, attachlist, tempTypeClass, vouAduited } = this.state if (type === 'checkVoucher') { return ( <div className="menu-voucher-wrap" style={config.style}> <div className="voucher-header" style={{padding: `10px ${config.wrap.space || 0}px`}}> {!vouAduited ?<Button disabled={status === 'empty' || status === 'saved'} onClick={() => this.triggersave()}>保存</Button> : null} {/* <PrintVoucher ID={config.uuid + 'print'} data={data} orgname={orgname} vouDate={vouDate} charName={charName} charInt={charInt} attachments={attachments} disabled={status !== 'saved'}/> */} <Button disabled={status !== 'saved'} onClick={this.triggerPrint}>打印</Button> {vouAduited ? <Button onClick={this.triggerUnAduit}>取消审核</Button> : <Button onClick={this.triggerAduit}>审核</Button>} <Button onClick={this.triggerclose}>关闭</Button> </div> <div className="voucher-body" style={{padding: `0px ${config.wrap.space || 0}px`}}> <div className="pre-wrap"> <div className="voucher-code"> <Select value={charType} disabled={vouAduited} dropdownClassName="mk-vcode-dropdown" onChange={(val, option) => this.setState({status: 'change', charType: val, charName: option.props.charname, charInt: option.props.charint})}> {typeOptions.map(option => <Select.Option key={option.id} value={option.voucher_class} charname={option.voucher_char} charint={option.voucher_char_int}>{option.voucher_char}</Select.Option> )} </Select> <InputNumber precision={0} min={1} disabled={vouAduited} value={charInt} autoComplete="off" onChange={(val) => this.setState({status: 'change', charInt: val})}/> 号 </div> <div className="voucher-date"> 日期:<DatePicker value={vouDate} disabled={vouAduited} onChange={this.changeVouDate}/> </div> <div className="voucher-text"> <Input value={title} placeholder="凭证文本" disabled={vouAduited} autoComplete="off" onChange={(e) => this.setState({status: 'change', title: e.target.value})}/> </div> <div className="voucher-affix"> 附单据 <InputNumber precision={0} disabled={vouAduited} value={attachments || 0} autoComplete="off" onChange={this.changeAttach}/> 张 <ResetAttach config={config} disabled={vouAduited} orgcode={orgcode} voucherCode={this.state.voucherCode} attachlist={attachlist} onChange={this.resetAttachList}/> <ResetRemark remark={remark} disabled={vouAduited} ID={config.uuid + 'remark'} onChange={(val) => this.setState({status: 'change', remark: val})}/> </div> </div> <div className="voucher-date"> 日期:<DatePicker value={vouDate} onChange={this.changeVouDate}/> </div> <div className="voucher-text"> <Input value={title} placeholder="凭证文本" autoComplete="off" onChange={(e) => this.setState({status: 'change', title: e.target.value})}/> </div> <div className="voucher-affix"> 附单据 <InputNumber precision={0} value={attachments || 0} autoComplete="off" onChange={this.changeAttach}/> 张 <ResetAttach config={config} orgcode={orgcode} voucherCode={this.state.voucherCode} attachlist={attachlist} onChange={this.resetAttachList}/> <ResetRemark remark={remark} ID={config.uuid + 'remark'} onChange={(val) => this.setState({status: 'change', remark: val})}/> </div> </div> : null} {type === 'createTemp' || type === 'checkTemp' ? <div className="pre-temp-wrap"> <div className="temp-text"> <span>模板名称:</span><Input value={title} placeholder="模板名称" autoComplete="off" onChange={(e) => this.setState({title: e.target.value})}/> </div> <div className="temp-text"> <span>模板类型:</span> <Select value={tempTypeClass} dropdownClassName="mk-vcode-dropdown" onChange={(val, option) => this.setState({tempTypeClass: val, tempTypeName: option.props.children})}> {tempTypes.map(option => <Select.Option key={option.data_code} value={option.data_code}>{option.data_name}</Select.Option> )} </Select> </div> <div className="temp-action"> <Button className="save-temp header-btn" onClick={() => this.triggerTempsave()}>保存</Button> <Button className="close-temp header-btn" onClick={this.triggerclose}>关闭</Button> </div> </div> : null} <VoucherTable config={config} loading={loading} data={data} onChange={this.dataChange}/> <VoucherTable config={config} loading={loading} data={data} onChange={this.dataChange}/> </div> <div className="user" style={{paddingLeft: `${config.wrap.space || 0}px`}}>制单人:{username}</div> </div> {type === 'createVoucher' || type === 'checkVoucher' ? <div className="user">制单人:{username}</div> : null} </div> ) ) } else if (type === 'createVoucher') { return ( <div className="menu-voucher-wrap" style={config.style}> <div className="voucher-header" style={{padding: `10px ${config.wrap.space || 0}px`}}> <Button disabled={status === 'empty'} onClick={() => this.triggersave('add')}>保存并新增</Button> <Button disabled={status === 'empty' || status === 'saved'} onClick={() => this.triggersave()}>保存</Button> <Button disabled={status !== 'saved'} onClick={this.triggerPrint}>打印</Button> <Dropdown overlay={<div className="mk-voucher-dropdown-wrap"> <SaveAsTemp tempTypes={tempTypes} onChange={this.triggerTempsave}/> <div className="split"></div> <LoadFromTemp tempTypes={tempTypes} onChange={this.triggerTempLoad}/> </div>} trigger={['hover']} placement="bottomCenter"> <Button>更多</Button> </Dropdown> </div> <div className="voucher-body" style={{padding: `0px ${config.wrap.space || 0}px`}}> <div className="pre-wrap"> <div className="voucher-code"> <Select value={charType} dropdownClassName="mk-vcode-dropdown" onChange={(val, option) => this.setState({status: 'change', charType: val, charName: option.props.charname, charInt: option.props.charint})}> {typeOptions.map(option => <Select.Option key={option.id} value={option.voucher_class} charname={option.voucher_char} charint={option.voucher_char_int}>{option.voucher_char}</Select.Option> )} </Select> <InputNumber precision={0} min={1} value={charInt} autoComplete="off" onChange={(val) => this.setState({status: 'change', charInt: val})}/> 号 </div> <div className="voucher-date"> 日期:<DatePicker value={vouDate} onChange={this.changeVouDate}/> </div> <div className="voucher-text"> <Input value={title} placeholder="凭证文本" autoComplete="off" onChange={(e) => this.setState({status: 'change', title: e.target.value})}/> </div> <div className="voucher-affix"> 附单据 <InputNumber precision={0} value={attachments || 0} autoComplete="off" onChange={this.changeAttach}/> 张 <ResetAttach config={config} orgcode={orgcode} voucherCode={this.state.voucherCode} attachlist={attachlist} onChange={this.resetAttachList}/> <ResetRemark remark={remark} ID={config.uuid + 'remark'} onChange={(val) => this.setState({status: 'change', remark: val})}/> </div> </div> <VoucherTable config={config} loading={loading} data={data} onChange={this.dataChange}/> </div> <div className="user" style={{paddingLeft: `${config.wrap.space || 0}px`}}>制单人:{username}</div> </div> ) } else { return ( <div className="menu-voucher-wrap" style={config.style}> <div className="voucher-body" style={{padding: `0px ${config.wrap.space || 0}px`}}> <div className="pre-temp-wrap"> <div className="temp-text"> <span>模板名称:</span><Input value={title} placeholder="模板名称" autoComplete="off" onChange={(e) => this.setState({title: e.target.value})}/> </div> <div className="temp-text"> <span>模板类型:</span> <Select value={tempTypeClass} dropdownClassName="mk-vcode-dropdown" onChange={(val, option) => this.setState({tempTypeClass: val, tempTypeName: option.props.children})}> {tempTypes.map(option => <Select.Option key={option.data_code} value={option.data_code}>{option.data_name}</Select.Option> )} </Select> </div> <div className="temp-action"> <Button onClick={() => this.triggerTempsave()}>保存</Button> <Button onClick={this.triggerclose}>关闭</Button> </div> </div> <VoucherTable config={config} loading={loading} data={data} onChange={this.dataChange}/> </div> </div> ) } } } src/tabviews/custom/components/module/voucher/index.scss
@@ -14,10 +14,23 @@ padding: 10px; border-bottom: 1px solid #eeeeee; .header-btn { .ant-btn { height: 28px; min-width: 80px; margin-right: 10px; background-color: #ffffff; border-color: #d8d8d8; color: rgba(0, 0, 0, 0.65); } .ant-btn[disabled] { background-color: #dadada!important; border-color: #dadada!important; color: #ffffff!important; } .ant-btn:not([disabled]):hover { background-color: var(--mk-sys-color); border-color: var(--mk-sys-color); color: #ffffff; } } .voucher-body { @@ -91,42 +104,14 @@ .ant-btn { margin-left: 15px; } .ant-btn:hover { color: var(--mk-sys-color); border-color: var(--mk-sys-color); } } } } .add-background { background: #26C281; border-color: #26C281; color: #ffffff; } .print-background { background-color: #8E44AD; border-color: #8E44AD; color: #ffffff; } .out-background { background-color: rgb(50, 197, 210); border-color: rgb(50, 197, 210); color: #ffffff; } .save-temp { background-color: var(--mk-sys-color); border-color: var(--mk-sys-color); color: #ffffff; } .close-temp { background-color: #ffffff; border-color: #f5222d; color: #f5222d; } .system-background { background: var(--mk-sys-color); border-color: var(--mk-sys-color); color: #ffffff; } .user { padding: 15px 30px 0px; } @@ -145,10 +130,19 @@ border: 1px solid #d8d8d8; border-radius: 4px; min-height: 66px; overflow: hidden; .ant-btn { display: block; width: 100%; border: none; color: rgba(0, 0, 0, 0.65); border-radius: 0; } .ant-btn:not([disabled]):hover { background-color: var(--mk-sys-color); border-color: var(--mk-sys-color); color: #ffffff; } .split { width: 100%; src/tabviews/custom/components/module/voucher/resetAttach/index.jsx
@@ -231,6 +231,7 @@ } render() { const { disabled } = this.props const { visible, upVisible, docVisible, files, list, documents, loading } = this.state return ( @@ -248,8 +249,8 @@ destroyOnClose > {loading ? <Spin /> : null} <Button type="link" className="attach-type-btn" disabled={loading} onClick={() => this.setState({upVisible: true})}>上传新文件</Button> <Button type="link" className="attach-type-btn" disabled={loading} onClick={() => this.setState({docVisible: true, selectDocs: []})}>从会计电子档案选择</Button> <Button type="link" className="attach-type-btn" disabled={loading || disabled} onClick={() => this.setState({upVisible: true})}>上传新文件</Button> <Button type="link" className="attach-type-btn" disabled={loading || disabled} onClick={() => this.setState({docVisible: true, selectDocs: []})}>从会计电子档案选择</Button> <div className="attach-selected-list"> {list.map(item => { return <div className="attach-item" key={item.id}> @@ -259,7 +260,7 @@ <div>{item.data_name ? item.data_name + ' / ' : ''}{item.attachments_title}</div> </div> <div> <DeleteOutlined onClick={() => this.deleteFile(item.id)}/> {!disabled ? <DeleteOutlined onClick={() => this.deleteFile(item.id)}/> : null} </div> </div> })} src/tabviews/custom/components/module/voucher/resetRemark/index.jsx
@@ -37,7 +37,7 @@ } render() { const { ID } = this.props const { ID, disabled } = this.props const { visible, remark } = this.state return ( @@ -52,7 +52,7 @@ onCancel={() => { this.setState({ visible: false })}} destroyOnClose > <TextArea id={ID} defaultValue={remark} rows={6}/> <TextArea id={ID} disabled={disabled} defaultValue={remark} rows={6}/> </Modal> </> ) src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
@@ -712,7 +712,9 @@ if (record.type === 'total') { children = <div className="content-wrap" style={{lineHeight: '60px'}}>合计: {val}</div> colSpan = 2 } else { } else if (record.$disabled) { children = <div className="content-wrap">{val}</div> } else { extra = <PlusOutlined onClick={this.plusLine}/> if (editing) { @@ -817,6 +819,17 @@ <span><InputNumber precision={4} className="inner-input" id={col.uuid + record.uuid + 'price'} defaultValue={record.net_unitprice || 0} onChange={(val) => this.onChange(val)} onPressEnter={this.pricePress} onBlur={this.priceBlur}/></span> </span> </div> } else if (record.$disabled) { countNode = <div className="count-wrap"> <span style={{marginRight: '5px'}}> <span>数量:</span> <span>{record.fcc_count || 0}</span> </span> <span> <span>单价:</span> <span>{record.net_unitprice || 0}</span> </span> </div> } else { countNode = <div className="count-wrap"> <span style={{marginRight: '5px'}} onClick={this.editCount}> @@ -891,6 +904,21 @@ <span><InputNumber precision={2} className="inner-input" id={col.uuid + record.uuid + 'origin'} defaultValue={record.foreign_amount || 0} onChange={(val) => this.onChange(val)} onPressEnter={this.originPress} onBlur={this.originBlur}/></span> </span> </div> } else if (record.$disabled) { currencyNode = <div className="count-wrap"> <span style={{marginRight: '5px'}}> <span>货币:</span> <span>{record.exratename || ''}</span> </span> <span style={{marginRight: '5px'}}> <span>汇率:</span> <span>{record.unitratio || 1}</span> </span> <span> <span>原币:</span> <span>{record.foreign_amount || 0}</span> </span> </div> } else { currencyNode = <div className="count-wrap"> <span style={{marginRight: '5px'}} onClick={this.editCurrency}> @@ -909,11 +937,19 @@ } } children = <div className="content-wrap" onClick={this.focus}> {val} {countNode} {currencyNode} </div> if (record.$disabled) { children = <div className="content-wrap"> {val} {countNode} {currencyNode} </div> } else { children = <div className="content-wrap" onClick={this.focus}> {val} {countNode} {currencyNode} </div> } } } } else if (col.field === 'debit') { @@ -930,13 +966,23 @@ } vals = (val * 100).toFixed(0).split('').reverse() } children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> if (record.$disabled) { children = <div className={'money-uint' + (down ? ' down' : '')}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> } else { children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> } } } else if (col.field === 'credit') { extra = <CloseOutlined onClick={this.delVoucher}/> if (record.type !== 'total' && !record.$disabled) { extra = <CloseOutlined onClick={this.delVoucher}/> } if (editing) { children = <InputNumber id={col.uuid + record.uuid} precision={2} defaultValue={record.credit} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/> @@ -951,10 +997,18 @@ } vals = (val * 100).toFixed(0).split('').reverse() } children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> if (record.$disabled) { children = <div className={'money-uint' + (down ? ' down' : '')}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> } else { children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}> <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span> <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span> </div> } } } @@ -966,17 +1020,17 @@ class VoucherTable extends Component { static propTpyes = { config: PropTypes.object, // 菜单Id data: PropTypes.any, // 表格数据 loading: PropTypes.bool, // 表格加载中 onChange: PropTypes.func, // 表格变动 config: PropTypes.object, data: PropTypes.any, loading: PropTypes.bool, onChange: PropTypes.func } state = { data: [], edData: [], tableId: '', // 表格ID columns: null, // 显示列 tableId: '', columns: null, } UNSAFE_componentWillMount () { @@ -1105,9 +1159,11 @@ return item }) let disabled = _data[0] && _data[0].$disabled ? true : false if (_data.length < 4) { for (let i = _data.length - 1; i < 4; i++) { _data.push({uuid: Utils.getguid(), index: i + 1, subject_voucher_text: '', subject_code: '', subject_name: '', debit: '', credit: ''}) _data.push({uuid: Utils.getguid(), $disabled: disabled, index: i + 1, subject_voucher_text: '', subject_code: '', subject_name: '', debit: '', credit: ''}) } } return _data