To perform the analysis below, I've used the General Election 2019 data available from the House of Commons Library.
Spoiler Effect
I've defined a flippable seat as a seat which the Conservative party won, but where the total number of votes won by the Labour, Liberal Democrat, Green & Plaid Cymru candidates was larger. I've included Green & Plaid Cymru because of the electoral pact that formed between the three smaller parties. If the seat was flippable, I've assigned it to the party that achieved the most votes in the election.
Using this definition, the total number of flippable seats is 60, with 43 seats that would have been won by Labour, and 17 more by the Liberal Democrats.
This would have changed the results as follows (unchanged parties ommited, seat changes from 2017):
- Conservative - 305 (-12)
- Labour - 245 (-17)
- Lib Dem - 28 (+16)
If this electoral pact was announced however, given the fact that the Brexit party stood down candidates in seats with a defending Tory candidate, it is likely that a similar pact would have formed. If we instead define a flippable seat as one where Lab + Lib + Green + PC is greater than Con + Brexit, the number of seats that would have flipped to an anti-hard-brexit party reduces to 47, with 30 being Labour and 17 being Liberal Democrat.
However, we also need to consider seats that would have been won by the combined forces of the Tory and Brexit party. These add up to 11 more seats for the Tories, and 2 more for the Brexit party, at the cost of Labour. This would have led to the following results:
- Conservative - 329 (+12)
- Labour - 219 (-43)
- Lib Dem - 28 (+16)
- Brexit - 2 (+2)
This would still, therefore, have led to a Tory majority government & a crushing Labour defeat.
Proportional Representation
The seat count based on a proportional voting system is slightly easier to calculate, albeit crudely. You haven't mentioned which voting system in particular you're interested in, so I've just taken the percentage of the electorate to calculate seat count. The proportional voting system last proposed in the UK was in the 2011 AV Referendum which would have led to a voting system with ranked preference - it's therefore impossible to guess at the results under this system.
Using percentage of the vote, each party's seat count would have been roughly as follows:
- Conservative - 283
- Labour - 209
- Lib Dem - 75
- SNP - 25
- Green - 18
- Brexit - 13
- DUP - 5
- Sinn Féin - 4
- Plaid Cymru - 3
- SDLP - 2
- Alliance - 2
- UUP - 2
Which would have led to an anti-hard-brexit majority. Note that this is, however an extremely crude approximation, as any analysis of votes cast under FPTP cannot sensibly be mapped to a proportional system given the unknown factors of tactical voting etc.