SAGE can compute the class group of a quadratic field, but it has issues with computing the order of elements within that class group:
QF.<x>=QuadraticField(-39)
CF=QF.class_group()
CF(QF.ideal(1+x)).order()
gives
NotImplementedErrorTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/server2/sage_notebook/worksheets/ljpk/0/code/6.py", line 6, in <module>
CF(QF.ideal(Integer(1)+x)).order()
File "/home/sage10/", line 1, in <module>
File "element.pyx", line 1190, in sage.structure.element.MultiplicativeGroupElement.order
File "element.pyx", line 1130, in sage.structure.element.MonoidElement.multiplicative_order
NotImplementedError