So if my computer downloads and maybe reads the whole block chain can there be viruses etc. stored within the blockchain/dapps?
Yes, malware and viruses could be transferred to your computer in the blockchain, just as they could be transferred to your computer in an email or a web page. Any time your computer gets arbitrary information from the outside world, exploit code could be included in that information.
However, just transferring the exploit code to your computer won't hurt you unless somebody can trick your computer into actually running the exploit code. This would involve finding and exploiting a security bug in software that reads the data. In the case of email, an attacker might find a bug in your email software, or trick you into running the code they emailed you with another program that executed the code.
In the case of a blockchain, the attacker might find an bug in your blockchain software (for Ethereum, say Geth or Parity) or in some other software that reads it, like your anti-virus software. This would be an attractive thing for an attacker to do, because people running blockchain clients are likely to have anonymous magical internet money on their computers. However, I can't think of any cases where somebody has managed to do this.
There have sometimes been cases where people have put malware into the blockchain with the goal of making anti-virus software see it and block or quarantine part of the blockchain, which stops your blockchain software working. This can be handled by either getting the anti-virus vendor to update their software so that it doesn't do that, or by configuring your anti-virus software to ignore the directories where you keep the blockchain data.
a virus is a malicious code when executed perform harmful actions such as corrupting the system or destroying data.
As you know We store in the blockchain transactions and contract code so is this code could be harmful to the nodes?
No, we could not write a virus using Ethereum contract because we don't have the necessary features to do so, we have no disk access neither network I/o. the contract code is compiled into a simple stack script executed by the VM and a contract has access only to its storage not to your disk. the only worry about the contract is the malicious contract performing a Ddos attack which has an effect on the network performance not on your pc 'node' security.