Commit c15081d923707357df1a59a0ecc96b6394336886
1 parent
7384baf9
sum功能支持bill类型;
Showing
2 changed files
with
106 additions
and
63 deletions
src/components/Common/CommonComponent/index.js
| @@ -1764,6 +1764,8 @@ export default class CommonComponent extends Component { | @@ -1764,6 +1764,8 @@ export default class CommonComponent extends Component { | ||
| 1764 | obj.onBlur = this.onBlur; | 1764 | obj.onBlur = this.onBlur; |
| 1765 | obj.onMouseEnter = this.onFocus; | 1765 | obj.onMouseEnter = this.onFocus; |
| 1766 | obj.id = `${this.props.showConfig.sName}${this.props.record ? this.props.record.sId : commonUtils.createSid()}`; /* 所有从表组件添加id */ | 1766 | obj.id = `${this.props.showConfig.sName}${this.props.record ? this.props.record.sId : commonUtils.createSid()}`; /* 所有从表组件添加id */ |
| 1767 | + obj["data-name"] = this.props.showConfig.sName; | ||
| 1768 | + obj["data-control-name"] = this.props.showConfig.sControlName; | ||
| 1767 | obj.placeholder = this.props.showConfig.placeholder || ""; | 1769 | obj.placeholder = this.props.showConfig.placeholder || ""; |
| 1768 | /* 返回值 */ | 1770 | /* 返回值 */ |
| 1769 | return obj; | 1771 | return obj; |
src/components/Common/CommonTable/index.js
| @@ -829,22 +829,25 @@ class CommonTableRc extends React.Component { | @@ -829,22 +829,25 @@ class CommonTableRc extends React.Component { | ||
| 829 | }; | 829 | }; |
| 830 | 830 | ||
| 831 | handleContextMenu = (event) => { | 831 | handleContextMenu = (event) => { |
| 832 | - // 判断右键位置是否有选中文本 | ||
| 833 | - if (!window.getSelection().toString()) { | ||
| 834 | - const { target } = event; | ||
| 835 | - const { tagName } = target; | ||
| 836 | - const oDiv = { | ||
| 837 | - 'span': target.parentNode, | ||
| 838 | - 'td': target.childNodes[0].childNodes[0], | ||
| 839 | - 'div': target.getAttribute('data-name') ? target : target.childNodes[0], | ||
| 840 | - }[tagName.toLowerCase()]; | ||
| 841 | - | ||
| 842 | - if (!oDiv) return; | ||
| 843 | - if (!oDiv.getAttribute('data-control-name')?.includes('_Sum')) return; | ||
| 844 | - // 阻止右键菜单 | ||
| 845 | - event.preventDefault(); | ||
| 846 | - this.setState({ totalDataNew: undefined, sumGroup: {} }); | ||
| 847 | - } | 832 | + try { |
| 833 | + // 判断右键位置是否有选中文本 | ||
| 834 | + if (!window.getSelection().toString()) { | ||
| 835 | + const { target } = event; | ||
| 836 | + const { tagName } = target; | ||
| 837 | + const oDiv = { | ||
| 838 | + 'span': target.getAttribute('data-name') ? target : target.parentNode, | ||
| 839 | + 'td': target?.childNodes[0]?.childNodes[0], | ||
| 840 | + 'div': target.getAttribute('data-name') ? target : target.childNodes[0], | ||
| 841 | + 'input': target, | ||
| 842 | + }[tagName.toLowerCase()]; | ||
| 843 | + | ||
| 844 | + if (!oDiv) return; | ||
| 845 | + if (!oDiv.getAttribute('data-control-name')?.includes('_Sum')) return; | ||
| 846 | + // 阻止右键菜单 | ||
| 847 | + event.preventDefault(); | ||
| 848 | + this.setState({ totalDataNew: undefined, sumGroup: {} }); | ||
| 849 | + } | ||
| 850 | + } catch (error) {} | ||
| 848 | 851 | ||
| 849 | } | 852 | } |
| 850 | 853 | ||
| @@ -4159,55 +4162,58 @@ class CommonTableRc extends React.Component { | @@ -4159,55 +4162,58 @@ class CommonTableRc extends React.Component { | ||
| 4159 | } | 4162 | } |
| 4160 | 4163 | ||
| 4161 | handleCellClick = (record) => { | 4164 | handleCellClick = (record) => { |
| 4162 | - const { enabled } = this.props; | ||
| 4163 | - if (enabled) return false; | ||
| 4164 | - | ||
| 4165 | - const { target } = event; | ||
| 4166 | - const { tagName } = target; | ||
| 4167 | - const oDiv = { | ||
| 4168 | - 'span': target.parentNode, | ||
| 4169 | - 'td': target.childNodes[0].childNodes[0], | ||
| 4170 | - 'div': target.getAttribute('data-name') ? target : target.childNodes[0], | ||
| 4171 | - }[tagName.toLowerCase()]; | ||
| 4172 | - | ||
| 4173 | - if (!oDiv || window.getSelection().toString()) return false; | ||
| 4174 | - | ||
| 4175 | - const [sName, sControlName] = [oDiv.getAttribute('data-name'), oDiv.getAttribute('data-control-name')]; | ||
| 4176 | - if (sControlName?.includes('_Sum')) { | ||
| 4177 | - const { sumGroup = {}, totalData = [{}], totalDataNew: totalDataNew0 = [{}] } = this.state; | ||
| 4178 | - const { dNetMoney, dNetPrice } = this.props.app.decimals; | ||
| 4179 | - sumGroup[sName] = sumGroup[sName] || []; | ||
| 4180 | - if (sumGroup[sName].includes(record[this.rowKey])) { | ||
| 4181 | - sumGroup[sName] = sumGroup[sName].filter(item => item !== record[this.rowKey]); | ||
| 4182 | - } else { | ||
| 4183 | - sumGroup[sName].push(record[this.rowKey]); | ||
| 4184 | - } | ||
| 4185 | - | ||
| 4186 | - let totalDataNew = [...totalDataNew0]; | ||
| 4187 | - if (sumGroup[sName].length) { | ||
| 4188 | - const sum = sumGroup[sName].reduce((pre, cur) => { | ||
| 4189 | - const curData = this.props.data.find(item => item[this.rowKey] === cur); | ||
| 4190 | - if (curData) { | ||
| 4191 | - let tempValue = 0; | ||
| 4192 | - if (sName.toLowerCase().endsWith('price')) { /* 价格 */ | ||
| 4193 | - tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetPrice) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetPrice), dNetPrice); | ||
| 4194 | - } else { /* 金额 */ | ||
| 4195 | - tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetMoney) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetMoney), dNetMoney); | 4165 | + try { |
| 4166 | + const { target } = event; | ||
| 4167 | + | ||
| 4168 | + const { tagName } = target; | ||
| 4169 | + const oDiv = { | ||
| 4170 | + 'span': target.getAttribute('data-name') ? target : target.parentNode, | ||
| 4171 | + 'td': target?.childNodes[0]?.childNodes[0], | ||
| 4172 | + 'div': target.getAttribute('data-name') ? target : target.childNodes[0], | ||
| 4173 | + 'input': target, | ||
| 4174 | + }[tagName.toLowerCase()]; | ||
| 4175 | + | ||
| 4176 | + if (!oDiv || window.getSelection().toString()) return false; | ||
| 4177 | + | ||
| 4178 | + const [sName, sControlName] = [oDiv.getAttribute('data-name'), oDiv.getAttribute('data-control-name')]; | ||
| 4179 | + if (sControlName?.includes('_Sum')) { | ||
| 4180 | + const { sumGroup = {}, totalData = [{}], totalDataNew: totalDataNew0 = [{}] } = this.state; | ||
| 4181 | + const { dNetMoney, dNetPrice } = this.props.app.decimals; | ||
| 4182 | + sumGroup[sName] = sumGroup[sName] || []; | ||
| 4183 | + if (sumGroup[sName].includes(record[this.rowKey])) { | ||
| 4184 | + sumGroup[sName] = sumGroup[sName].filter(item => item !== record[this.rowKey]); | ||
| 4185 | + } else { | ||
| 4186 | + sumGroup[sName].push(record[this.rowKey]); | ||
| 4187 | + } | ||
| 4188 | + | ||
| 4189 | + let totalDataNew = [...totalDataNew0]; | ||
| 4190 | + if (sumGroup[sName].length) { | ||
| 4191 | + const sum = sumGroup[sName].reduce((pre, cur) => { | ||
| 4192 | + const curData = this.props.data.find(item => item[this.rowKey] === cur); | ||
| 4193 | + if (curData) { | ||
| 4194 | + let tempValue = 0; | ||
| 4195 | + if (sName.toLowerCase().endsWith('price')) { /* 价格 */ | ||
| 4196 | + tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetPrice) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetPrice), dNetPrice); | ||
| 4197 | + } else { /* 金额 */ | ||
| 4198 | + tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetMoney) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetMoney), dNetMoney); | ||
| 4199 | + } | ||
| 4200 | + return tempValue; | ||
| 4196 | } | 4201 | } |
| 4197 | - return tempValue; | ||
| 4198 | - } | ||
| 4199 | - return pre; | ||
| 4200 | - }, 0); | ||
| 4201 | - | ||
| 4202 | - totalDataNew = [{ ...totalData[0], ...totalDataNew[0], [sName]: sum }]; | ||
| 4203 | - } else { | ||
| 4204 | - totalDataNew[0][sName] = totalData[0][sName]; | 4202 | + return pre; |
| 4203 | + }, 0); | ||
| 4204 | + | ||
| 4205 | + totalDataNew = [{ ...totalData[0], ...totalDataNew[0], [sName]: sum }]; | ||
| 4206 | + } else { | ||
| 4207 | + totalDataNew[0][sName] = totalData[0][sName]; | ||
| 4208 | + } | ||
| 4209 | + | ||
| 4210 | + this.setState({ sumGroup, totalDataNew }); | ||
| 4211 | + return !this.props.enabled; | ||
| 4205 | } | 4212 | } |
| 4206 | - | ||
| 4207 | - this.setState({ sumGroup, totalDataNew }); | ||
| 4208 | - return true; | 4213 | + return false; |
| 4214 | + } catch (error) { | ||
| 4215 | + return false; | ||
| 4209 | } | 4216 | } |
| 4210 | - return false; | ||
| 4211 | } | 4217 | } |
| 4212 | 4218 | ||
| 4213 | handleGetSumStyle = (sName, index) => { | 4219 | handleGetSumStyle = (sName, index) => { |
| @@ -5818,7 +5824,12 @@ class CommonTableRc extends React.Component { | @@ -5818,7 +5824,12 @@ class CommonTableRc extends React.Component { | ||
| 5818 | this.hasSpanBgColor = true; | 5824 | this.hasSpanBgColor = true; |
| 5819 | } | 5825 | } |
| 5820 | 5826 | ||
| 5821 | - res = (<span className={`noInput readonlySpanStyle ${bReadonlyField ? "readonlyField" : ""}`} style={{ color: `${cellColor}`, backgroundColor: `${backgroundColor}` }} > {(commonUtils.isNotEmptyObject(sName) && sName.substring(0, 1) === 'b') || (imgBox !== '') ? '' : | 5827 | + res = (<span |
| 5828 | + className={`noInput readonlySpanStyle ${bReadonlyField ? "readonlyField" : ""}`} | ||
| 5829 | + style={{ color: `${cellColor}`, backgroundColor: `${backgroundColor}` }} | ||
| 5830 | + data-name={showConfig.sName} | ||
| 5831 | + data-control-name={showConfig.sControlName} | ||
| 5832 | + > {(commonUtils.isNotEmptyObject(sName) && sName.substring(0, 1) === 'b') || (imgBox !== '') ? '' : | ||
| 5822 | <Tooltip | 5833 | <Tooltip |
| 5823 | placement={bSpecialTitle ? 'right' : 'bottomLeft'} | 5834 | placement={bSpecialTitle ? 'right' : 'bottomLeft'} |
| 5824 | overlayClassName={bSpecialTitle ? 'commonSpecialTitle' : 'commonTitle'} | 5835 | overlayClassName={bSpecialTitle ? 'commonSpecialTitle' : 'commonTitle'} |
| @@ -6192,6 +6203,36 @@ class CommonTableRc extends React.Component { | @@ -6192,6 +6203,36 @@ class CommonTableRc extends React.Component { | ||
| 6192 | stateValue.tableInfoColumn = stateValue.tableInfoColumn.sort(compare('sortIndex')); | 6203 | stateValue.tableInfoColumn = stateValue.tableInfoColumn.sort(compare('sortIndex')); |
| 6193 | } | 6204 | } |
| 6194 | } | 6205 | } |
| 6206 | + | ||
| 6207 | + if (enabled) { | ||
| 6208 | + const { sumGroup = {}, totalDataNew: totalDataNew0 = [{}] } = this.state; | ||
| 6209 | + const { dNetMoney, dNetPrice } = this.props.app.decimals; | ||
| 6210 | + let totalDataNew = [...totalDataNew0]; | ||
| 6211 | + const sumData = {}; | ||
| 6212 | + Object.keys(sumGroup).forEach(sName => { | ||
| 6213 | + if (sumGroup[sName].length) { | ||
| 6214 | + const sum = sumGroup[sName].reduce((pre, cur) => { | ||
| 6215 | + const curData = this.props.data.find(item => item[this.rowKey] === cur); | ||
| 6216 | + if (curData) { | ||
| 6217 | + let tempValue = 0; | ||
| 6218 | + if (sName.toLowerCase().endsWith('price')) { /* 价格 */ | ||
| 6219 | + tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetPrice) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetPrice), dNetPrice); | ||
| 6220 | + } else { /* 金额 */ | ||
| 6221 | + tempValue = commonUtils.convertFixNum(commonUtils.convertFixNum(commonUtils.isNull(curData[sName], 0), dNetMoney) + commonUtils.convertFixNum(commonUtils.isNull(pre, 0), dNetMoney), dNetMoney); | ||
| 6222 | + } | ||
| 6223 | + return tempValue; | ||
| 6224 | + } | ||
| 6225 | + return pre; | ||
| 6226 | + }, 0); | ||
| 6227 | + | ||
| 6228 | + sumData[sName] = sum; | ||
| 6229 | + } | ||
| 6230 | + }); | ||
| 6231 | + | ||
| 6232 | + totalDataNew = [{ ...totalData[0], ...sumData }]; | ||
| 6233 | + stateValue.totalDataNew = totalDataNew; | ||
| 6234 | + } | ||
| 6235 | + | ||
| 6195 | if (this.mounted) { | 6236 | if (this.mounted) { |
| 6196 | this.setState(stateValue); | 6237 | this.setState(stateValue); |
| 6197 | // 生成merge maps; | 6238 | // 生成merge maps; |