If you are seeing red in the vomit that isn't from the color of dog food you changed him to then this is likely blood and you should see a vet about that.
Leaking urine can be a sign of a bladder infection which is pretty common in pups or bladder stones or crystals or kidney problems or drinking too much fluids due to another health issue.
The not eating well could be due to the food change (one should always change food slowly adding a little more new to the old food each meal) or may be because he isn't feeling well.
I can't tell if your dog is 7 weeks, 7 months, or 7 years old and depending on age that blood may have different significance such as viral infection, intestinal parasites or a swallowed non food item, or an ulcer etc.
He really should see a vet if at all possible.
Hope this helps you!
I believe he is about 6-8 months old. Does that change anything in your answer?
If he has had his shots that at least means this isn't likely to be an infection such as parvo.
With this age dog it could easily be that his vomiting issue is from a swallowed non food item. But it might also be related to a kidney or bladder infection making him feel ill.
If he swallowed something that is bothering his stomach he might be drinking more leading to the urine leak.
For just the stomach upset a short term help might be to use a stomach soothing med.
An over the counter med you might try would be Pepcid or Tagamet or Zantac.
Be sure to tell the vet when you see them if you use any of these.
You can read about dose amounts (and cautions) scrolling down on the pages here
I didn't mention those earlier as you might not want to use them on a 7 week old pup.
I do think in person vet care is your best option just in case he got into something toxic or has something more than just a mild digestive upset going on.
Antifreeze is an example of a toxic item that a dog might get into that could lead to kidney issues and vomiting.