Jelly, 119 118 bytes
WHAM
“ƭH[Ȥ9);¦8¬ụḷPç£Ɗz"\ʂʠRØ)ṖṾĠ€|ḌḄ'"rƈ!ṇṭ~Wẋj’ṃ“|\ _”s7;€“| |”µṚ“\/”y;µ€U5R¤¦s6Ṛ
“Þ}ỌGṗo’ṃ“ -|.'”s4µṪẋ7ṭµ€m€0s3jЀ¢Ṛ€Y€Y
How?
“...’ṃ“|\ _”s7;€“| |”µṚ“\/”y;µ€U5R¤¦s6Ṛ - Link 1: middle rows of blocks: no arguments
“...’ - base 250 number
ṃ“|\ _” - convert to base 4 with digits [0-3]="_|\ "
s7 - split into sevens
“| |” - literal "| |"
;€ - concatenate €ach
µ - monadic chain separation (call that rhs)
µ€ - for each r in rhs:
Ṛ - reverse r
“\/”y - convert any '\'s to '/'s
; - concatenate with r
¦ - apply to indexes...
¤ - nilad followed by link(s) as a nilad
5R - range(5) = [1,2,3,4,5]
U - upend
s6 - split into sixes
Ṛ - reverse
“Þ}ỌGṗo’ṃ“ -|.'”s4µṪẋ7ṭµ€m€0s3jЀ¢Ṛ€Y€Y - Main link: no arguments
“Þ}ỌGṗo’ - base 250 number
ṃ“ -|.'” - convert to base 5 with digits [0-4]="' -|."
s4 - split into fours
µ - monadic chain separation (call that lhs)
µ€ - for each l in lhs:
Ṫ - tail l
ẋ7 - repeat (the tail) seven times
ṭ - tack to l
m€0 - reflect €ach
s3 - split into threes
¢ - call last link (1) as a nilad
jЀ - join mapped over right
Ṛ€ - reverse €ach
Y€ - join each with newlines
Y - join with newlines
- implicit print