I don't think the cubs offense is as far off as others do. I think they keep getting inopportune injuries. Contreras hit for a 84 wRC+ in April but in May and june he's up to 105 and 103. Presumably with Miggy gone he sees a lot more playing time. Rizzo started off hot in April with a 129 wRC+ but couldn't hit in May(95). In June he's murdering the ball with a 174 wRC+. Let's skip 2B for a second. Russell at SS didn't hit much at all in April and May(83/57 wRC+) but in June he's up to 114. Given his family life the early season struggle isn't that surprising. Bryant's been fairly steadily good with wRC+'s of 138, 150, and 127. Heyward has been snake bit by injuries but was hitting a fairly solid if not amazing .258/.315/.399.
Given the above think you can realistically say that once you get everyone healthy those 5 are probably a pretty good and steady line up. This leaves you with 2B, LF and CF. 2B should be fine. First off when Zobrist gets back he has a track record of being a good hitter. But even if he fails, Happ is hitting .252/.323/.538. Baez who knows what he'll do week to week. But at the very least 2B should be fine and potentially with Happ and Zobrist you have a solid LF as well. And of course Schwarber looms in AAA(3-8 with 4 k's thus far). CF is weird in the way Maddon has chose to play it. I can see the argument for playing Baez in the infield and all but he hasn't hit anywhere near as well as the platoon of Jay/Almora. After last night, Almora is hitting .275/.347/.399 and I sorta feel like you run with him more often than not. Long story short, if they can get everyone on the field at the same time think that is a top 10 or so offense in baseball and maybe higher. Between injuries and slumps they haven't all clicked at the same time and because of that you get the inconsistency we've seen. But it's not like you have to flub the numbers a ton to see potential.
I think I've said this before but if there's an area to be concerned with it's pitching specifically starting pitching. Think a lot is gonna depend on what Hendricks comes back like. Lester is perhaps a bit unlucky thus far but largely what you expect. Arrieta has good underlying numbers. I can't imagine that his 65.9% strand rate lasts. Lackey's fallen off a cliff statistically since I last looked. K/9 and BB/9 seem like you could survive with him as a #4/5 starter if he could get a grip on HR/FB rate but he's not looked good recently and he could just be done. Butler has been living on a knife edge IMO. He has a 5.36 k/9 and a 4.33 bb/9. NL average for a starter is 7.81 k/9 and 3.14 bb/9. Montgomery has a good ERA but his k/9 and bb/9 in his starts are pretty middling.
If Hendricks returns to form I think you have 3 solid starters in the second half. I think Arrieta is better than he's showing ERA wise and Lester is a bit unlucky. You can probably cobble together a #5 out of Butler/Lackey/Montgomery but they really will need to add something trade wise.