There are problems here because you have included both numeric_std and std_logic_arith in your code. They both define signed and unsigned types - causing a conflict that means you cannot see either type without directly using them.
The solution is to remove std_logic_arith as it is not a standard VHDL library anyway. This will mean you will have to convert to std_logic_vector via the to_signed() function, and conv_integer will not be available.
On another note: why have you declared a local conv_integer function? you have not defined a body for it - and it will override the conv_integer function in the std_logic_arith library.