If you have a data set with n observations and fit it to a spline with df degrees of freedom, the bs() function from the splines package returns a (n x df) matrix. The columns of the matrix represent the basis functions used to do the fit. Let's assume df = 4. If b1 represents the first column of the matrix, b2 is the second column, etc., you are fitting
y ~ b1 + b2 + b3 + b4
Below is an example where I plot the both the fit as produced by the predict() function and a manually calculated set of predictions using the method outlined above. I got this method from the following Stack Overflow thread
library(splines)
set.seed(34556)
dat <- data.frame(x = seq(1, 10, 0.2), y = seq(1, 10, 0.2) + rnorm(46, 0, 2))
FIT <- lm( y ~ bs(x, df = 4 ), data =dat)
summary(FIT)
#>
#> Call:
#> lm(formula = y ~ bs(x, df = 4), data = dat)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -4.9201 -0.9719 0.1797 1.2219 4.7808
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.8029 1.2656 1.425 0.16185
#> bs(x, df = 4)1 2.9686 2.6567 1.117 0.27032
#> bs(x, df = 4)2 -0.3138 2.2283 -0.141 0.88870
#> bs(x, df = 4)3 10.5438 2.3718 4.446 6.54e-05 ***
#> bs(x, df = 4)4 4.9131 1.6975 2.894 0.00606 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.003 on 41 degrees of freedom
#> Multiple R-squared: 0.5959, Adjusted R-squared: 0.5565
#> F-statistic: 15.12 on 4 and 41 DF, p-value: 1.131e-07
MAT <- bs(dat$x, df = 4) #get the matrix returned by bs()
head(MAT)
#> 1 2 3 4
#> [1,] 0.0000000 0.000000000 0.000000e+00 0
#> [2,] 0.1245981 0.002875171 2.194787e-05 0
#> [3,] 0.2323402 0.011149520 1.755830e-04 0
#> [4,] 0.3241481 0.024296296 5.925926e-04 0
#> [5,] 0.4009438 0.041788752 1.404664e-03 0
#> [6,] 0.4636488 0.063100137 2.743484e-03 0
X <- dat[[1]] #get the x values from dat for plotting later
Ypred <- MAT[, 1] * FIT$coefficients[2] +
MAT[, 2] * FIT$coefficients[3] +
MAT[, 3] * FIT$coefficients[4] +
MAT[, 4] * FIT$coefficients[5] + FIT$coefficients[1]
plot(dat$x, dat$y)
Pts <- seq(1,10, length.out = 100)
lines(Pts, predict(FIT, newdata = list(x = Pts)))
points(X, Ypred, col = "red")

Created on 2019-05-30 by the reprex package (v0.2.1)
You should be able to use your three sets of spline coefficients similarly with the matrix returned by bs() with your data.
EDIT:
I neater way to calculate Ypred is
Ypred <- MAT %*% FIT$coefficients[2:5] + FIT$coefficients[1]